Pagini recente » Cod sursa (job #1187823) | Cod sursa (job #2696214) | Cod sursa (job #2339493) | Cod sursa (job #3147004) | Cod sursa (job #890137)
Cod sursa(job #890137)
#include <cstdio>
#include <deque>
#include <vector>
#include <algorithm>
using namespace std;
bool viz[50005];
int cost[50005];
int n,m,x,y,z;
vector<pair<int,int> > v[250005];
deque<int>Q;
void Dijkstra(int X)
{
int a,b;
viz[X] = true;
Q.push_back(X);
while(!Q.empty())
{
X = Q.front();
for(int j=0; j<v[X].size(); j++)
{
a = v[X][j].first;
b = v[X][j].second;
if(!viz[a] || cost[X]+b <cost[a])
{
viz[a] = true;
cost[a] = cost[X]+b;
Q.push_back(a);
}
}
Q.pop_front();
}
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijktsra.out","w",stdout);
scanf("%d %d", &n,&m);
for(int i=1; i<=m; i++)
{
scanf("%d %d %d",&x,&y,&z);
v[x].push_back(make_pair(y,z));
}
Dijkstra(1);
for(int i=2; i<=n; i++)
printf("%d ",cost[i]);
return 0;
}