Pagini recente » Cod sursa (job #2706908) | Cod sursa (job #1977363) | Istoria paginii runda/ivegotabrothernamedlee/clasament | Cod sursa (job #2486811) | Cod sursa (job #2691434)
#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;
int main()
{
fin>>n>>m;
int mini=999999999,maxi=0,contor;
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;
}