您的位置:首页 > 其它

浙大PAT甲级-1004

2017-06-03 00:05 417 查看
代码有点乱,自己都懒得再看了。

关键点:

-用二维数组存储树的节点

广度遍历,思路应该比较简单#include <iostream>
using namespace std;

int tree[100][100];
int visit[100];
void init(int n)
{
for(int i=1; i<=n; i++)
{
visit[i]=0;
for(int j=1; j<=n; j++)
tree[i][j]=0;
}
}
int main()
{
int n,m,x;
cin>>n>>m;
init(n);
x=m;
while(x--)
{
int a,b;
cin>>a>>b;
while(b--)
{
int c;
cin>>c;
tree[a][c]=1;
}
}
visit[1]=1;
int leaf=0;
bool judge=0;
bool judge2=0;
for(int i=2; i<=n; i++)
if(tree[1][i]==1)
{
visit[i]=1;
judge=1;
}
if(judge==1)
{
cout<<0;
for(int k=1; k<=n; k++)
{
leaf=0;

judge2=0;
for(int i=2; i<=n; i++)
{
if(visit[i]==k){
judge=0;
judge2=1;
for(int j=i; j<=n; j++)
{
if(tree[i][j]==1)
{
visit[j]=k+1;
judge=1;
}
}
if(judge==0)
leaf++;
}
}
if(judge2==0)
break;
cout<<" "<<leaf;
}
}
else
{
cout<<1;
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  浙大PAT甲级1004