Pagini recente » Cod sursa (job #2791016) | Cod sursa (job #2861236) | Cod sursa (job #3290916) | Cod sursa (job #1118060) | Cod sursa (job #2984385)
#include <fstream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int INF = INT_MAX;
vector < vector < pair <int,int> > > adjList;
priority_queue < pair <int,int>, vector < pair <int,int> >, greater < pair <int,int> > > pq;
vector <int> dist;
int main()
{
int n,m,x,y,z;
pair <int,int> lemq;
fin>>n>>m;
adjList.resize(n + 1);
dist.resize(n + 1,INF);
for(int i = 1; i <= m;i++)
{
fin>>x>>y>>z;
lemq.first = z;
lemq.second = y;
adjList[x].push_back(lemq);
}
dist[1] = 0;
for(auto i : adjList[1])
{
pq.push(i);
dist[i.second] = i.first;
}
while(!pq.empty()){
pair<int,int> cand = pq.top();
pq.pop();
if(dist[cand.second] == cand.first)
for(auto i : adjList[cand.second])
{
if(dist[i.second] > cand.first + i.first)
{
dist[i.second] = cand.first + i.first;
pq.push({dist[i.second],i.second});
}
}
}
for(int i = 2;i <= n;i++)
{
dist[i] %= INT_MAX;
fout<<dist[i]<<" ";
}
return 0;
}