Pagini recente » Cod sursa (job #2438419) | Cod sursa (job #1735487) | Cod sursa (job #261866) | Cod sursa (job #1623547) | Cod sursa (job #1856917)
#include <iostream>
#include <fstream>
#define IN 20002
using namespace std;
ifstream f("dmin.in");
ofstream g("dmin.out");
int n,k,c[100][100];
int s[500],d[500],t[500],u[500];
void dijstrka(int start)
{
int i,ok,k,minn;
for(i=1;i<=n;i++)
{
d[i]=c[start][i];
if(c[start][i]&&c[start][i]!=IN)
t[i]=start;
u[i]=1;
}
s[start]=1;
ok=1;
while(ok)
{
minn=IN;
for(i=1;i<=n;i++)
if(d[i]<minn&&s[i]==0)
{
minn=d[i];
k=i;
}
if(minn!=IN)
{
s[k]=1;
for(i=1;i<=n;i++)
if(d[i]>d[k]+c[k][i])
{
d[i]=d[k]+c[k][i];
t[i]=k;
u[i]=1;
}
else
if(d[i]==(d[k]+c[k][i])&&k!=i)
u[i]++;
}
else
ok=0;
}
}
int main()
{
int m,x,y,i,k,j;
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>k;
c[y][x]=c[x][y]=k;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(c[i][j]==0&&i!=j)
c[i][j]=IN;
y=1;
dijstrka(y);
for(i=2;i<=n;i++)
g<<u[i]<<" ";
}