Pagini recente » Cod sursa (job #1496869) | Cod sursa (job #2977740) | Cod sursa (job #2939846) | Cod sursa (job #3258804) | Cod sursa (job #1980946)
#include <bits/stdc++.h>
#define MAXN 50005
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
struct edge{
int v,c;
edge(int v=0, int c=0):v(v),c(c){}
bool operator<(edge oth) const{
return c<oth.c;
}
};
int n,m,D[MAXN],viz[MAXN],t[MAXN];
vector<edge> G[MAXN];
void Dijkstra(int s)
{
for(int i=1;i<=n;++i)
D[i]=0xfff;
for(edge i: G[s])
D[i.v]=i.c;
D[s]=0;
viz[s]=1;
for(int i=1;i<=n;++i)
{
int _min=0xffff,k;
for(int j=1;j<=n;++j)
if(!viz[j] && D[j]<_min)
_min=D[j],k=j;
viz[k]=1;
for(edge j : G[k])
if(D[k]+j.c<D[j.v] )
D[j.v]=D[k]+j.c,t[j.v]=k;
}
for(int i=2;i<=n;++i)
out<<D[i]<<' ';
}
int main()
{
in>>n>>m;
for(int i=1;i<=m;++i)
{
int a,b,c;
in>>a>>b>>c;
G[a].push_back(edge(b,c));
}
Dijkstra(1);
return 0;
}