Pagini recente » Cod sursa (job #2670252) | Borderou de evaluare (job #415511) | Cod sursa (job #1084942) | Cod sursa (job #1695960) | Cod sursa (job #2806411)
#include<bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
struct CustomCompare{
bool operator()(const pair<int,int> &a, const pair<int,int> &b){
return a.second>b.second;
}
};
vector<pair<int,int>> adjList[50001];
vector<int> isMarked,length;
priority_queue<pair<int,int>,vector<pair<int,int>>,CustomCompare>heap;
void Dijkstra(int x){
int i;
isMarked[x]++;
for(i=0;i<adjList[x].size();++i){
if(isMarked[adjList[x][i].first]==0){
pair<int,int> aux;
//aux.push_back(x);
//aux.push_back(adjList[x][i].first);
//aux.push_back(adjList[x][i].second+length[x]);
heap.push(make_pair(adjList[x][i].first,adjList[x][i].second+length[x]));
//aux.clear();
}
}
pair<int,int> frt;
while(heap.size()>0){
frt=heap.top();
heap.pop();
if(/*isMarked[first[0]]==1 &&*/ isMarked[frt.first]==0){
length[frt.first]=frt.second;
Dijkstra(frt.first);
}
}
}
int main(){
int n,m,i,a,b,c;
f>>n>>m;
for(i=0;i<n;++i){
isMarked.push_back(0);
length.push_back(0);
}
for(i=0;i<m;++i){
f>>a>>b>>c;
adjList[a-1].push_back({b-1,c});
}
Dijkstra(0);
for(i=1;i<n;++i)
g<<length[i]<<' ';
return 0;
}