Pagini recente » Borderou de evaluare (job #1206678) | Borderou de evaluare (job #3310829) | Cod sursa (job #353344) | Cod sursa (job #3346629) | Cod sursa (job #3318705)
/*
https://www.infoarena.ro/problema/dfs
*/
// #include<iostream>
// #include<vector>
// #include<fstream>
// using namespace std;
// ifstream f("dfs.in");
// ofstream g("dfs.out");
// int n,m,i,x,y;
// vector<vector<int>> a;
// vector<int> viz;
// void dfs(int nod)
// {
// viz[nod]=1;
// for(auto it:a[nod])
// if(viz[it]==0)
// dfs(it);
// }
// int main()
// {
// f>>n>>m;
// a.resize(n+1);
// viz.resize(n+1,0);
// for(i=1;i<=m;i++)
// {
// f>>x>>y;
// a[x].push_back(y);
// a[y].push_back(x);
// }
// int contor=0;
// for(i=1;i<=n;i++)
// if(viz[i]==0)
// {
// contor++;
// dfs(i);
// }
// g<<contor;
// return 0;
// }
/*
https://www.infoarena.ro/problema/bfs
*/
#include<iostream>
#include<vector>
#include<queue>
#include<fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
//vector<int>a;
queue<int>q;
vector<int>dist;
vector<vector<int>>a;
void bfs(int nod)
{
dist[nod]=0;
q.push(nod);
while(!q.empty())
{
int x=q.front();
q.pop();
for(auto it:a[x])
if(dist[it]>dist[x]+1)
{
dist[it]=dist[x]+1;
q.push(it);
}
}
}
int main()
{
int n,m,i,x,y,s;
f>>n>>m>>s;
a.resize(n+1);
dist.resize(n+1,1e9);
for(i=1;i<=m;i++)
{
f>>x>>y;
a[x].push_back(y);
//a[y].push_back(x);
}
bfs(s);
for(i=1;i<=n;i++)
if(dist[i]==1e9)
g<<-1<<" ";
else
g<<dist[i]<<" ";
return 0;
}