Cod sursa(job #1661469)

Utilizator alex.vasiuVasiu Alexandru alex.vasiu Data 23 martie 2016 21:35:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include<algorithm>
#include <set>
using namespace std;
vector <int> G[100005];
int n,m,S;
const int INF = 1e8;
ifstream f("bfs.in");
ofstream g("bfs.out");
void bfs()
{
    vector <int> dist(n+1,INF);
    set <pair<int,int>> c;
    c.insert({0,S});
    dist[S]=0;
    while(!c.empty())
    {
        int u = c.begin() -> second;
        c.erase(c.begin());
        for(auto p:G[u])
            if(dist[p]>dist[u]+1)
        {
            c.erase({dist[p],p});
            dist[p]=dist[u]+1;
            c.insert({dist[p],p});
        }
    }
    for(int i=1;i<=n;i++)
        if(dist[i]==INF)
        g<<"-1 ";
    else
        g<<dist[i]<<" ";
}
int main()
{
   f>>n>>m>>S;
   for(int i=0;i<m;i++)
   {
       int a,b;
       f>>a>>b;
       G[a].push_back(b);
   }
    bfs();
}