Pagini recente » Cod sursa (job #1331286) | Cod sursa (job #1069859) | Cod sursa (job #2820282) | Cod sursa (job #843171) | Cod sursa (job #2685382)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
const int inf=1<<30;
int dijkstra(int n,int start,const vector<vector<pair<int,int> > >&adj)
{
vector<int>dist(n+1,inf);
dist[start]=0;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
q.push({0,start});
while(!q.empty())
{
auto best=q.top();
int du=best.first;
int u=best.second;
q.pop();
if(du!=dist[u])continue;
for(auto p :adj[u])
{
int v=p.second;
int e=p.first;
if(dist[v]>e+du)
{
dist[v]=e+du;
q.push({dist[v],v});
}
}
}
return dist[n];
}
int main()
{
ifstream be("ubuntzei.in");
ofstream ki("ubuntzei.out");
int n,m,k;
be>>n>>m>>k;
vector<vector<pair<int,int> > >adj(n+1);
for(int i=0;i<m;i++)
{
int x,y,cost;
be>>x>>y>>cost;
adj[x].push_back({cost,y});
}
ki<<dijkstra(n,1,adj);
return 0;
}