Pagini recente » Cod sursa (job #3253767) | Cod sursa (job #610315) | Cod sursa (job #1471352) | Cod sursa (job #2108987) | Cod sursa (job #1601052)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <queue>
const int NMAX = 250005 ;
const int INF = 0x3f3f3f3f ;
using namespace std ;
ifstream fin("dijsktra.in") ;
ofstream fout("dijsktra.out") ;
vector <pair <int, int> > V[NMAX] ;
int D[NMAX], N, M;
queue <int> Q;
inline void Dijsktra(int start)
{
Q.push(start) ;
D[start] = 0 ;
while(!Q.empty())
{
int act = Q.front() ;
Q.pop() ;
for(vector <pair <int, int> > ::iterator it = V[act].begin() ; it != V[act].end() ; ++ it)
{
if(D[it -> first] > D[act] + it -> second)
D[it -> first] = D[act] + it -> second;
Q.push(it -> first) ;
}
}
}
int main()
{
fin >> N >> M ;
for(int i = 1 ; i <= M ; ++ i)
{
int x, y, cost ;
fin >> x >> y >> cost ;
V[x].push_back(make_pair(y, cost)) ;
}
memset(D, INF, sizeof D) ;
Dijsktra(1) ;
for(int i = 2 ; i <= N ; ++ i)
fout << D[i] << ' ' ;
fin.close() ;
fout.close();
}