Pagini recente » Cod sursa (job #380031) | Cod sursa (job #2258519) | Cod sursa (job #405945) | Cod sursa (job #2840464) | Cod sursa (job #1448052)
#include <bits/stdc++.h>
using namespace std;
struct edge{int to;int cost;};
long long V,E,N,k,l,d[50002],src=1;
int cst;
edge temp;
bool visited[50002];
vector<vector<edge> >g;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
cin>>V>>E;
g.resize(V+1);
for(int i=0;i<E;i++){
cin>>k>>l>>cst;
temp.to=l;
temp.cost=cst;
g[k].push_back(temp);
}
// cin>>src;
queue<int>q;
for(int i=0;i<=V;i++)
d[i]=2000000000;
d[src]=0;
q.push(src);
while(!q.empty())
{
int v=q.front();
q.pop();
for(int i=0;i<g[v].size();i++)
{
if(d[g[v][i].to]>d[v]+g[v][i].cost){
d[g[v][i].to]=d[v]+g[v][i].cost;
if(!visited[g[v][i].to]){
q.push(g[v][i].to);
visited[g[v][i].to]=1;
}
}
}
visited[v]=0;
}
for(int i=2;i<=V;i++){
if(d[i]!=2000000000)
cout<<d[i]<<" ";
else cout<<"0 ";
}
return 0;
}