Pagini recente » Cod sursa (job #2638691) | Cod sursa (job #839450) | Cod sursa (job #2371706) | Monitorul de evaluare | Cod sursa (job #2570623)
#include <bits/stdc++.h>
#define NMAX 50005
using namespace std;
const int INF = 0x3f3f3f3f;
ifstream fin("dijkstra.in") ;
ofstream fout("dijkstra.out") ;
int n, m, x, y, cost;
int dist[NMAX], valid[NMAX] ;
queue <int> Q ;
vector < pair <int,int> > v[NMAX] ;
int main()
{
fin >> n >> m ;
for(int i=1; i<=m; i++)
{
fin >> x >> y >> cost ;
v[x].push_back(make_pair(y,cost)) ;
}
for(int i=2; i<=n; i++)
dist[i] = INF ;
Q.push(1) ;
while(!Q.empty())
{
int node = Q.front() ;
valid[node] = 0;
Q.pop() ;
for(auto it = v[node].begin(); it != v[node].end(); ++it)
{
x = it->first ;
cost = it->second ;
if(dist[x] > dist[node] + cost)
{
dist[x] = dist[node] + cost ;
if(!valid[x])
{
valid[x] ++ ;
Q.push({x}) ;
}
}
}
}
for(int i=2; i<=n; i++)
{
if(dist[i] == INF)
dist[i] = 0 ;
fout << dist[i] << " " ;
}
return 0;
}