这是dfs , 不是bfs。
先打头文件:
#include <bits/stdc++.h>//c++万用头
using namespace std;
然后是dfs
vector <int>tree[500005];//先定义
int d[500005];
void dfs(int u,int fa)
{
for(int i=0;i<tree[u].size();i++)
{
int v=tree[u][i];
if(v==fa) continue;
d[v]=d[u]+1;
dfs(?1,?2);//递归
}
}
?1是什么 ?2又是什么;
?1=v ?2=u
主函数:
int main()
{
int n,u,v;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>u>>v;
tree[u].push_back(v);//把u压入v
tree[v].push_back(u);//把v压入u
}
dfs(1,0);
for(int i=1;i<=n;i++)
cout<<d[i]<<endl;
return 0;//完结撒花
}
ac代码
#include <bits/stdc++.h>
using namespace std;
vector <int>tree[500005];
int d[500005];
void dfs(int u,int fa)
{
for(int i=0;i<tree[u].size();i++)
{
int v=tree[u][i];
if(v==fa) continue;
d[v]=d[u]+1;
dfs(v,u);
}
}
int main()
{
int n,u,v;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>u>>v;
tree[u].push_back(v);
tree[v].push_back(u);
}
dfs(1,0);
for(int i=1;i<=n;i++)
cout<<d[i]<<endl;
return 0;
}
这是蒟蒻的第一个题解