Pagini recente » Cod sursa (job #2441445) | Cod sursa (job #1420620) | Cod sursa (job #2403804) | Cod sursa (job #3259771) | Cod sursa (job #2572154)
#include <iostream>
#include <bits/stdc++.h>
#include <vector>
#include <queue>
#define INF 10000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
priority_queue< pair<int,int>, vector<pair<int,int> >, greater<pair<int, int> > >Q;
vector< pair <int,int> > q[250001];
int n,m,i,j,x,y,c,dist[100001],uz[100001],mini=10000000,r,suma,ii;
void djk(int s)
{
int nod,cost,i;
for(i=1;i<=n;i++)
dist[i]=INF;
dist[s]=0;
for(i=0;i<q[s].size();i++)
{
dist[q[s][i].second]=q[s][i].first;
Q.push(q[s][i]);
}
uz[s]=1;
while(!Q.empty())
{
nod=Q.top().second;
cost=Q.top().first;
uz[nod]=1;
Q.pop();
for(i=0;i<q[nod].size();i++)
{
if(!uz[q[nod][i].second])
if(dist[q[nod][i].second]>q[nod][i].first+dist[nod])
{
dist[q[nod][i].second]=dist[nod]+q[nod][i].first;
Q.push({q[nod][i].second,dist[q[nod][i].second]});
}
}
}
}
int main()
{f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y>>c;
q[x].push_back({c,y});
q[y].push_back({c,x});
}
djk(1);
for(i=2;i<=n;i++)
g<<dist[i]<<" ";
return 0;
}