Pagini recente » Cod sursa (job #933032) | Cod sursa (job #1164196) | Cod sursa (job #2267303) | Cod sursa (job #2754375) | Cod sursa (job #1164067)
#include<fstream>
#include<cstdio>
#include<set>
#include<vector>
#include<algorithm>
#define FOR(a,b,c) for(int a=b;a<=c;++a)
#include<cstring>
#include<bitset>
#include<cmath>
#include<iomanip>
#include<queue>
#define f cin
#define g cout
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define mod 1000000007
#define ll unsigned long long
#define bit (1<<18)
#define inf (1<<30)
#define N 100100
#define mod 1000000007
#define inu "dijkstra.in"
#define outu "dijkstra.out"
using namespace std;
ifstream f(inu);
ofstream g(outu);
//int dx[]={0,0,0,1,-1};
//int dy[]={0,1,-1,0,0};
vector<pair<int,int> > v[N];
int D[N],n,m,nod,viz[N],x,y,c;
struct el{int dist,ind;} a;
struct cmp{ inline bool operator() (el A,el B) { return A.dist>B.dist; } };
priority_queue <int,vector<el>,cmp> pq;
int main ()
{
f>>n>>m;
FOR(i,1,m)
{
f>>x>>y>>c;
v[x].push_back(make_pair(y,c));
}
FOR(i,1,n)
D[i]=inf;
D[1]=0;
a.dist=0;
a.ind=1;
pq.push(a);
while(!pq.empty())
{
while(viz[pq.top().ind])
pq.pop();
nod=pq.top().ind;
viz[nod]=1;
pq.pop();
for(int i=0;i<v[nod].size();++i)
{
int de=v[nod][i].first;
int co=v[nod][i].second;
if(D[nod]+co<D[de])
{
D[de]=D[nod]+co;
a.dist=D[de];
a.ind=de;
pq.push(a);
}
}
}
FOR(i,2,n)
{
if(D[i]>=inf)
D[i]=0;
g<<D[i]<<" ";
}
return 0;
}