Pagini recente » Cod sursa (job #1016387) | Cod sursa (job #729426) | Cod sursa (job #1435425) | Istoria paginii runda/tyy/clasament | Cod sursa (job #1853252)
#include <iostream>
#include <fstream>
using namespace std;
int n,m;
int x,y,w;
int a[100][100];
int dis[100];
int viz[100];
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int dij(int x)
{
viz[x]=1;
for(int i=1; i<=n; i++)
if(viz[i]==0 && a[x][i]!=-1)
if(dis[x]+a[x][i]<dis[i] || dis[i]==-1)
dis[i]=dis[x]+a[x][i];
int smaller=-1,sw=-1;
for(int i=0; i<=n; i++)
if((viz[i]==0) && (dis[i]>=0) && ((sw>dis[i]) || (sw==-1)))
{
sw=dis[i];
smaller=i;
}
if(smaller!=-1)
{
dij(smaller);
return 0;
}
return 0;
}
int main()
{ int t;
f>>n>>m;
for(int i=0; i<=n; i++)
{
for(int j=0; j<=n; j++)
a[i][j]=-1;
}
for(int i=0; i<=n; i++)
dis[i]=-1;
dis[1]=0;
for(int i=1;i<=m;i++)
{f>>x>>y>>w;
a[x][y]=w;
a[y][x]=w;
}
dij(1);
for(int i=2; i<=n; i++)
g<<dis[i]<<" ";
g<<endl;
}