Pagini recente » Cod sursa (job #2201842) | Cod sursa (job #1381863) | Cod sursa (job #2093363) | Cod sursa (job #1377429) | Cod sursa (job #2506475)
#include<bits/stdc++.h>
#define st first
#define nd second
#define pb push_back
using namespace std;
typedef long long ll;
FILE *fin=fopen("dijkstra.in","r");
FILE *fout=fopen("dijkstra.out","w");
const int INF= 500*200000, N=50005;
int n, m, i, j, ans[N], x, y, z;
priority_queue <pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > pq;
vector<pair<int,int> > v[N];
bool queued[N], used[N];
void dijk(int nod)
{
pq.push({0,1});
while(!pq.empty())
{
nod=pq.top().nd;
used[nod]=1;
pq.pop();
for(auto i:v[nod])
{
ans[i.st]=min(ans[i.st],ans[nod]+i.nd);
pq.push({ans[i.st],i.st});
}
}
}
int main()
{
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=m;i++)
{
fscanf(fin,"%d%d%d",&x,&y,&z);
v[x].pb({y,z});
//v[y].pb({x,z});
}
for(i=2;i<=n;i++)
ans[i]=INF;
dijk(1);
for(i=2;i<=n;i++)
{
if(ans[i]==INF)
fprintf(fout,"0 ");
else fprintf(fout,"%d ",ans[i]);
}
fprintf(fout,"\n");
fclose(fin);
fclose(fout);
}