Pagini recente » Cod sursa (job #1955205) | Cod sursa (job #451604) | Cod sursa (job #580319) | Cod sursa (job #2403486) | Cod sursa (job #1492447)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct u {unsigned short x,y,c;};
u v[250000];
long n,m,i;
bool sem;
unsigned short w[50000];
void citire()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>v[i].x>>v[i].y>>v[i].c;
}
}
int main()
{
citire();
do
{
sem=0;
for(i=1;i<=m;i++)
{
if (v[i].x==1 && w[v[i].y]==0) {w[v[i].y]=v[i].c; sem=1;}
else if (v[i].y==1 && w[v[i].x]==0) {w[v[i].x]=v[i].c; sem=1;}
else if (w[v[i].x]>0 && w[v[i].y]==0) {w[v[i].y]=w[v[i].x]+v[i].c; sem=1;}
else if (w[v[i].y]>0 && w[v[i].x]==0) {w[v[i].x]=w[v[i].y]+v[i].c; sem=1;}
else if (w[v[i].x]>w[v[i].y]+v[i].c) {w[v[i].x]=w[v[i].y]+v[i].c; sem=1;}
else if (w[v[i].y]>w[v[i].x]+v[i].c) {w[v[i].y]=w[v[i].x]+v[i].c; sem=1;}
}
}while(sem);
for(i=2;i<=n;i++) g<<w[i]<<" ";
g.close();
return 0;
}