Pagini recente » Cod sursa (job #491021) | Cod sursa (job #1176523) | Cod sursa (job #2152107) | Cod sursa (job #2336388) | Cod sursa (job #2115264)
#include <iostream>
#include <cstdio>
#include <vector>
#include <bitset>
#include <cstring>
#include <queue>
using namespace std;
vector <pair<int,int>> g[50001];
int d[50001];
bitset <50001> viz;
int n,m;
int main()
{
freopen("dijkstra.in","r",stdin);
//freopen("dijkstra.out","w",stdout);
scanf("%d %d", &n,&m);
int a,b,c;
for(int i=0;i<m;++i)
scanf("\n%d %d %d", &a,&b,&c),
g[a-1].push_back({b-1,c});
memset(d,0x3f3f3f,sizeof d);
queue <int> q;
q.push(0);
d[0]=0;
while(!q.empty())
{
a=q.front();
q.pop();
viz[a]=0;
for(pair<int,int> i: g[a])
{
b=i.first;
c=i.second;
if(d[b]>d[a]+c)
{
d[b]=d[a]+c;
if(!viz[b])
{
viz[b]=1;
q.push(b);
}
}
}
}
for(int i=1;i<n;++i)
{
if(d[i]!=0x3f3f3f)
printf("%d ", d[i]);
else
printf("0 ");
}
return 0;
}