Pagini recente » Cod sursa (job #2433542) | Cod sursa (job #2081125) | Cod sursa (job #2492183) | Cod sursa (job #2619141) | Cod sursa (job #2205974)
#include <iostream>
#include <vector>
#include <queue>
#include <fstream>
#include <list>
using namespace std;
int main() {
vector<list<pair<unsigned long long,unsigned long long>>>Graf;
ifstream fin("dijkstra.in");
unsigned long long N,M,i,n1,n2,c;
fin>>N>>M;
Graf.resize(N+1);
for(i=0;i<M;i++)
{
fin>>n1>>n2>>c;
Graf[n1].push_back(make_pair(n2,c));
Graf[n2].push_back(make_pair(n1,c));
}
fin.close();
unsigned long long s=1;
vector<long long>viz,DIST,pred;
viz.resize(N+1);
pred.resize(N+1);
DIST.resize(N+1);
for(i=0;i<=N;i++)
DIST[i]=8888888888;
priority_queue<pair<unsigned long long,unsigned long long>,vector<pair<unsigned long long,unsigned long long>>,greater<pair<unsigned long long,unsigned long long>>> Q;//cost,nod
Q.push(make_pair(0,s));
DIST[s]=0;
while(!Q.empty())
{
unsigned long long x=Q.top().second;
Q.pop();
if(viz[x]==1)
continue;
viz[x]=1;
for(pair<unsigned long long,unsigned long long>y:Graf[x])
{
if((DIST[y.first]>DIST[x]+y.second))
{
pred[y.first]=x;
DIST[y.first]=DIST[x]+y.second;
Q.push(make_pair(DIST[y.first],y.first));
}
}
}
ofstream fout("dijkstra.out");
for(i=2;i<=N;i++)
{
fout<<DIST[i]<<" ";
}
return 0;
}