Cod sursa(job #2280403)

Utilizator tavi255Varzaru Octavian Stefan tavi255 Data 10 noiembrie 2018 15:51:57
Problema Obiective Scor 35
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
//#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream in("obiective.in");
ofstream out("obiective.out");
int n,m,p,nr;
const int Max=32005;
vector < pair < int ,int > >gg[Max];
vector < int >d;
set < pair < int ,int > >c;
void citire()
{
    in>>n>>m;
    for(int i=1;i<=m;i++)
    {
        int x,y;
        in>>x>>y;
        gg[x].push_back(make_pair(y,0));
        gg[y].push_back(make_pair(x,1));
    }
}

void Dijkstra(int x,int y)
{
    while(!c.empty()) c.erase(c.begin());
   d= vector <int >(n+1,INT_MAX);
   d[x]=0;
   c.insert({0,x});
   while(!c.empty())
   {
       int nod=c.begin()->second;
       c.erase(c.begin());
       for(int i=0;i<gg[nod].size();i++)
       {
           int vecin=gg[nod][i].first;
           int cost=gg[nod][i].second;
           if(d[vecin]>d[nod]+cost)
           {
               if(d[vecin]!=INT_MAX)
               c.erase({d[vecin],vecin});
               d[vecin]=d[nod]+cost;
               c.insert({d[vecin],vecin});
           }
       }
   }
   out<<d[y]<<"\n";

}
int main()
{
    citire();
     in>>p;
    for(int i=1;i<=p;i++)
    {
        int x,y;
        in>>x>>y;
        Dijkstra(x,y);

    }
    return 0;
}