Pagini recente » Cod sursa (job #753576) | Cod sursa (job #604821) | Cod sursa (job #178531) | Cod sursa (job #984978) | Cod sursa (job #903550)
Cod sursa(job #903550)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
#define N 50002
struct edge
{
int to,cost;
};
int n;
vector <edge> a[N];
queue <int> q;
int d[N];
void read()
{
int m;
int x,y,z;
scanf("%d%d",&n,&m);
while(m--)
{
scanf("%d%d%d",&x,&y,&z);
a[x].push_back((edge){y,z});
//a[y].push_back((edge){x,z});
}
}
void run()
{
int x,y;
q.push(1);
d[1]=0;
while(!q.empty())
{
x=q.front();
q.pop();
for(size_t i=0;i<a[x].size();++i)
{
y=a[x][i].to;
if(d[y]==0 || d[y]>d[x]+a[x][i].cost)
{
d[y]=d[x]+a[x][i].cost;
q.push(y);
}
}
}
}
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
read();
run();
for(int i=2;i<=n;++i)
printf("%d ",d[i]);
return 0;
}