Pagini recente » Cod sursa (job #1730406) | Cod sursa (job #13005) | Cod sursa (job #836018) | Cod sursa (job #1737758) | Cod sursa (job #1661469)
#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();
}