Cod sursa(job #2572162)

Utilizator AlinaaaaAgurida Alina Maria Alinaaaa Data 5 martie 2020 11:56:10
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <bits/stdc++.h>
#include <vector>
#include <queue>
#define INF 10000000
using namespace std;
ifstream f("dijkstra2.in");
ofstream g("dijkstra2.out");
priority_queue< pair<int,int>, vector<pair<int,int> >, greater<pair<int, int> > >Q;
vector< pair <int,int> > q[250001];
int n,m,i,j,x,y,c,dist[100001],uz[100001],mini=10000000,r,suma,ii;



void djk(int s)
{
    int nod,cost,i;
for(i=1;i<=n;i++)
    dist[i]=INF;
dist[s]=0;
for(i=0;i<q[s].size();i++)
{
    dist[q[s][i].second]=q[s][i].first;
    Q.push(q[s][i]);
}
uz[s]=1;
while(!Q.empty())
{
    nod=Q.top().second;
    cost=Q.top().first;
    uz[nod]=1;
    Q.pop();
    for(i=0;i<q[nod].size();i++)
    {
        if(!uz[q[nod][i].second])
            if(dist[q[nod][i].second]>q[nod][i].first+dist[nod])
        {
            dist[q[nod][i].second]=dist[nod]+q[nod][i].first;
            Q.push({q[nod][i].second,dist[q[nod][i].second]});
        }
    }
}


}
int main()
{f>>n>>m;
for(i=1;i<=m;i++)
{
    f>>x>>y>>c;
    q[x].push_back({c,y});
   // q[y].push_back({c,x});
}
    djk(1);
for(i=2;i<=n;i++)
g<<dist[i]<<" ";
 return 0;
}