Pagini recente » Cod sursa (job #1799990) | Cod sursa (job #3209402) | Cod sursa (job #2815706) | Cod sursa (job #265612) | Cod sursa (job #2607332)
#include <bits/stdc++.h>
#define N 50005
using namespace std;
int dist[N] ,n;
vector<pair<int,int> > graf[N] ;
ifstream fin("dijkstra.in") ;
ofstream fout("dijkstra.out") ;
class cmp
{
public:
bool operator () ( int a , int b)
{
return dist[a] > dist[b] ;
}
};
void dij(int nod)
{
int i ;
priority_queue<int,vector<int>,cmp> pq ;
bool viz[N];
pq.push(nod) ;
for ( i = 1 ; i <= n ; i++ )
dist[i] = 0x3f3f3f3f , viz[i] = false ;
dist[nod] = 0 ;
while ( !pq.empty() )
{
nod = pq.top() ;
pq.pop() ;
viz[nod] = false;
for ( auto vec : graf[nod] )
{
if ( dist[vec.first] > dist[nod] + vec.second )
{
dist[vec.first] = dist[nod] + vec.second ;
if ( viz[vec.first] == false )
{
pq.push(vec.first) ;
viz[vec.first] = true ;
}
}
}
}
}
void citire()
{
int i , x , y , z,m;
fin >> n >> m ;
for ( i = 1; i <= m ; i++ )
{
fin >> x >> y >> z;
graf[x].push_back({y,z}) ;
}
}
int main()
{
citire();
dij(1);
for ( int i = 2 ; i <= n ; i++ )
{
if ( dist[i] == 0x3f3f3f3f )
fout << "0 " ;
else
fout << dist[i] << " " ;
}
}