Pagini recente » Cod sursa (job #2154202) | Cod sursa (job #1710594) | Cod sursa (job #432534) | Cod sursa (job #594596) | Cod sursa (job #2243552)
#include <iostream>
#include <fstream>
#include <limits.h>
using namespace std;
int a[100][100], b[100][100], n, m, viz[100], dis[100], start, finish;
bool verif ()
{
for (int i=1;i<=n;i++)
if (viz[i]==0)
return 0;
for (int i=1;i<=n;i++)
if (viz[i]==0&&dis[i]<INT_MAX)
return 0;
return 1;
}
int main()
{
int nodcrt;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
fin>>n>>m;
for (int i=0;i<m;i++)
{
int x,y,cost;
fin>>x>>y>>cost;
a[x][y]=cost;
a[y][x]=cost;
}
nodcrt=1;
for (int i=1;i<=n;i++)
{
dis[i]=INT_MAX;
}
dis[nodcrt]=0;
while(verif()==0)
{
for (int j=1;j<=n;j++)
if (a[nodcrt][j]&&viz[j]==0&&dis[j]>dis[nodcrt]+a[nodcrt][j])
{
dis[j]=dis[nodcrt]+a[nodcrt][j];
if (j==5)
cout<<dis[nodcrt]<<" "<<a[nodcrt][j]<<"\n";
}
viz[nodcrt]=1;
int minim=INT_MAX;
for (int i=1;i<=n;i++)
if (viz[i]==0&&dis[i]<minim)
{
minim=dis[i];
nodcrt=i;
}
//for (int i=1;i<=n;i++)
// cout<<dis[i]<<" ";
//cout<<"\n";
}
for (int i=2;i<=n;i++)
fout<<dis[i]<<" ";
return 0;
}