Pagini recente » Monitorul de evaluare | Cod sursa (job #3333817) | Cod sursa (job #600155) | Cod sursa (job #2848670) | Cod sursa (job #3318673)
// DFS
// #include <fstream>
// #include <vector>
// using namespace std;
// ifstream cin("dfs.in");
// ofstream cout("dfs.out");
// vector <int> L[100001];
// int viz[100001];
// int n, m,x,y,i,j,cc;
// void DFS(int nod)
// {
// viz[nod]=1;
// for (int i=0 ; i<L[nod].size(); i++)
// {
// if(viz[L[nod][i]]==0)
// DFS(L[nod][i]);
// }
// }
// int main(){
// cin>>n>>m;
// for( i=1; i<=m; i++)
// {
// cin>>x>>y;
// L[x].push_back(y);
// L[y].push_back(x);
// }
// // for(i=1;i<=n;i++)
// // {
// // cout<<i<<": ";
// // for( j = 0; j<L[i].size() ; j++)
// // cout<<L[i][j]<< " ";
// // cout<<endl;
// // }
// cc=0;
// for(i=1 ;i<= n; i++)
// {
// if(viz[i]==0)
// {
// DFS(i);
// cc++;
// }
// }
// cout<<cc;
// return 0;
// }
//BFS
#include <fstream>
#include <vector>
#include <queue>
#define INF 999999
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
queue<int>q;
vector<int>L[100001];
int n,m,s,d[100001];
void BFS(int s)
{
int nod;
for(int i=1;i<=n;i++)
d[i]=INF;
d[s]=0;
q.push(s);
while(!q.empty())
{
nod=q.front();
q.pop();
for(int v=0;v<L[nod].size();v++)
if(d[L[nod][v]]>d[nod]+1)
{
d[L[nod][v]]=d[nod]+1;
q.push(L[nod][v]);
}
}
}
int main()
{
int x,y;
f>>n>>m>>s;
for(int i=1;i<=m;i++)
{
f>>x>>y;
L[x].push_back(y);
}
BFS(s);
for(int i=1;i<=n;i++)
if(d[i]==INF)
g<<-1<<' ';
else
g<<d[i]<<' ';
return 0;
}