Pagini recente » Cod sursa (job #191546) | Cod sursa (job #2521345) | Rating Ciorba Bogdan (Ewaru) | Monitorul de evaluare | Cod sursa (job #1796366)
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define maxn 200005
#define rc(s) return cout << s,0
#define fast ios_base::sync_with_stdio(false);cin.tie(0)
#define endl '\n'
#define cin fin
#define cout fout
#define int ll
using namespace std;
vector< pair<int,int> > vec[maxn];
int dist[maxn];
int T,src,n,m,x,y,cst,i,u,v;
priority_queue< pair<int,int> , vector < pair<int,int> >,greater< pair<int,int> > > Q;
void Dijkstra(int nod)
{
memset(dist,-1,sizeof(dist));
dist[nod] = 0;
Q.push(make_pair(dist[nod],nod));
while(!Q.empty())
{
u = Q.top().second;
v = Q.top().first;
Q.pop();
if(dist[u] == v)
for(int i = 0;i<vec[u].size();i++)
{
if(dist[vec[u][i].second]==-1 || dist[vec[u][i].second]>dist[u]+vec[u][i].first)
{
dist[vec[u][i].second] = dist[u]+vec[u][i].first;
Q.push(make_pair(dist[vec[u][i].second],vec[u][i].second));
}
}
}
}
int32_t main()
{
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
cin >> n >> m;
for(int i = 1;i<=m;i++)
{
cin >> x >> y >> cst;
vec[x].push_back(make_pair(cst,y));
}
Dijkstra(1);
for(i = 2;i<=n;i++)
if(dist[i]==-1) cout << "0 ";
else
cout <<dist[i] << ' ';
fin.close();
fout.close();
}