Pagini recente » Cod sursa (job #26466) | Cod sursa (job #96741) | Borderou de evaluare (job #1788891) | Cod sursa (job #2473069) | Cod sursa (job #864548)
Cod sursa(job #864548)
#include<stdio.h>
#include<limits>
#include<vector>
#include<queue>
#include <cstring>
using namespace std;
#define inf 0x3f3f3f3f
int n,m;
struct nod {
int u, c;
} aux;
vector <nod> G[50001];
queue <int> q;
vector <int> v;
void dijkstra(int front)
{
int fr;
v[front]=0;
q.push(front);
while( !q.empty() )
{
fr=q.front();
for(int i=0;i<G[fr].size(); i++)
if ( v[G[fr][i].u]>v[fr]+G[fr][i].c)
{
v[G[fr][i].u]=v[fr]+G[fr][i].c;
q.push(G[fr][i].u);
}
q.pop();
}
}
int main() {
freopen ("dijkstra.in", "r", stdin);
freopen ("dijkstra.out", "w", stdout);
int i, a, b , c;
scanf ("%d %d", &n, &m);
v.resize (n+1,inf);
for(i = 1; i <= m; i++) {
scanf ("%d %d %d", &a, &b, &c);
aux.u = b;
aux.c = c;
G[a].push_back(aux);
}
dijkstra(1);
for(i=2;i<=n;i++)
if(v[i]!=inf) printf("%d ",v[i]);
else printf ("0 ");
return 0;
}