Pagini recente » Cod sursa (job #2406977) | Cod sursa (job #2836766) | Cod sursa (job #1983375) | Cod sursa (job #1834880) | Cod sursa (job #3156492)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
//DFS PE INFOARENA(teams.cere link) (parcurgere)
/*
const int NMAX = 100000;
vector<int> G[NMAX];
int vis[NMAX];
void DFS(int x)
{
//cout << x;
vis[x] = 1;
for (auto next : G[x]) //in loc de auto daca nu merge, bag for(int i=0;i<G[x].size();i++) int next=G[x][i];
{
if (!vis[next])
DFS(next);
}
}
int main()
{
int n, m;
cin >> n >> m;
for (int i = 1;i <=m;i++)
{
int x, y;
cin >> x >> y;
G[x].push_back(y);
//G[y].push_back(x);
}
int cc = 0;
for (int i = 1;i <= n;i++)
{
if (!vis[i])
{
cc++;
}
}
DFS(1);
cout << cc;
return 0;
}
*/
// BFS pe infoarena (parcurgere)
ifstream f("bfs.in");
ofstream g("bfs.out");
const int NMAX = 100001;
vector<int> G[NMAX];
int vis[NMAX];
int d[NMAX];
void BFS(int x)
{
queue<int>q;
q.push(x);
d[x] = 0;
vis[x] = 1;
while (!q.empty())
{
x = q.front();
//cout << x << " ";
q.pop();
for (auto next : G[x])
{
if (!vis[next])
{
q.push(next);
vis[next] = 1;
d[next] = d[x] + 1;
}
}
}
}
int main()
{
int n, m, k;
f >> n >> m >> k;
for (int i = 1;i <= m;i++)
{
int x, y;
f >> x >> y;
G[x].push_back(y);
}
BFS(k);
for (int i = 1;i <= n;i++)
{
if (i != k && d[i] == 0)
{
g << "-1" << " ";
}
else
g << d[i] << " ";
}
return 0;
}
//
/*
int main()
{
}
*/