Pagini recente » supers | Cod sursa (job #2328607) | Cod sursa (job #167657) | Cod sursa (job #2033685) | Cod sursa (job #2691435)
#include<iostream>
#include<fstream>
using namespace std;
ifstream fin("dijkstra2.in");
ofstream fout("dijkstra.out");
int val[100][100],n,m,distanta[100],v[100],nrsir[100],elpr[100],maxim=0,maxi=0,mini=999999999,contor;
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int a,b,c;
fin>>a>>b>>c;
nrsir[b]=nrsir[a]+1;
if(maxi<nrsir[b])
{
maxi=nrsir[b];
contor=b;
}
if(maxim<b)
maxim=b;
if(mini>a)
mini=a;
val[a][b]=c;
val[b][a]=c;
}
distanta[mini]=0;
int el=0;
for(int i=1;i<=n;i++)
{
if(val[mini][i]!=0)
{
el++;
v[el]=i;
elpr[i]=mini;
distanta[i]=val[mini][i]+distanta[mini];
}
}
while(el!=0)
{
for(int i=1;i<=n;i++)
{
if((val[v[1]][i]!=0)&&(distanta[i]==0)&&(mini!=i))
{
el++;
v[el]=i;
distanta[i]=val[v[1]][i]+distanta[v[1]];
elpr[i]=v[1];
}
else if((val[v[1]][i]!=0)&&(distanta[v[1]]+val[v[1]][i]<distanta[i])&&(mini!=i))
{
distanta[i]=val[v[1]][i]+distanta[v[1]];
elpr[i]=v[1];
}
}
for(int i=1;i<=el-1;i++)
v[i]=v[i+1];
el--;
}
for(int i=mini+1;i<=maxim;i++)
fout<<distanta[i]<<" ";
return 0;
}