Pagini recente » Cod sursa (job #953464) | Cod sursa (job #62846) | Cod sursa (job #1587598) | Istoria paginii runda/tuzgurelcontest | Cod sursa (job #713134)
Cod sursa(job #713134)
#include<fstream>
#include<limits>
using namespace std;
#define inf 250000000
long long n,d[50001],m;
struct graf {
int x,y,z;
};
graf arc[250001];
int dist(int a, int b) {
int k=-1;
for(int i=1;i<=m;i++)
if(arc[i].x==a && arc[i].y==b) {
k=arc[i].z;
i=m+1;
}
return k;
}
void bellman(int x0) {
int i,k, tata[50001],j,p;
for(i=1;i<=n;i++) {
d[i]=inf;
tata[i]=0;
}
d[x0]=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++) {
p=dist(j,k);
if(d[j]!=inf && p!=-1)
if(d[k]>d[j]+p) {
d[k]=d[j]+p;
tata[k]=j;
}
}
}
int main() {
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int i,x0;
f>>n>>m;
x0=1;
for(i=1;i<=m;i++)
f>>arc[i].x>>arc[i].y>>arc[i].z;
bellman(x0);
for(i=2;i<=n;i++)
if(d[i]!=inf) g<<d[i]<<" ";
else g<<0<<" ";
return 0;
}