Pagini recente » Cod sursa (job #1083294) | Cod sursa (job #1646232) | Cod sursa (job #807966) | Cod sursa (job #1963617) | Cod sursa (job #2040607)
#include <bits/stdc++.h>
#define oo 1000000000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int main()
{
priority_queue< pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>> > q;
int n,m,i,j,x;
fin>>n>>m;
vector<int> dist(n+5,oo);
vector<vector<pair<int,int>>> path(n+5);
bitset<50010> viz;
for(;m;m--)
{
fin>>i>>j>>x;
path[i].push_back(make_pair(j,x));
}
q.push(make_pair(0,1));
while(!q.empty())
{
x=q.top().first;
j=q.top().second;
q.pop();
if(!viz[j])
{
for( i=0;i<path[j].size();i++)
{
if(!viz[path[j][i].first])
{
q.push(make_pair(x+path[j][i].second,path[j][i].first));
dist[path[j][i].first]=min(dist[path[j][i].first],path[j][i].second+x);
}
}
viz[j]=1;
}
}
for(i=2;i<=n;i++)
if(dist[i]==oo)
fout<<0<<' ';
else
fout<<dist[i]<<' ';
return 0;
}