没过样例找不到错

题目

#include <bits/stdc++.h>
using namespace std;
char tre[1005][1005];
int vis[1005];
int n,ans=0;
void dfs(int step,int id);
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>tre[i][j];
			if(i==1){
				vis[i]=1;
				dfs(i,j);
			}
		}
		
	}
	cout<<ans;
    return 0;
}
void dfs(int step,int id){
		ans=max(ans,step);
		for(int i=1;i<=n;i++){
			if(vis[i]!=1&&tre[id][i]=='1'){
				vis[i]=1;
				dfs(step+1,id+1);
			}
		}
}

为啥不对

1 个赞

您好,可否发个题面

他发题面了

1 个赞

最上面

1 个赞

但就是点不开

1 个赞

已知一棵树,有 N 个结点,编号 1 至 N,其中 1 号是根。

求树的深度(根节点的深度为0)。

输入格式:

第一行一个数 N。(1≤N≤1000)

接下来 N 行每行 N 个 1 或 0,第 i 行第 j 列是 1,表示 i,j 两点有边,否则没有边。

输出格式:

树的深度。

样例输入:

10 0110000000 1001000000 1000110001 0100000000 0010000000 0010001000 0000010110 0000001000 0000001000 0010000000

样列输出:

4

1 个赞

输入中间的空是换行

1 个赞

已AC

1 个赞

帮我看看拓展题哪错了

1 个赞
#include<bits/stdc++.h>
using namespace std;
int cnt[1005][1005],ans[1005],num[1005];//计数 ans
char tre[1005][1005];
int n;
void dfs(int id,int dep);
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>tre[i][j];
		}
		
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(tre[i][j]=='1')
				cnt[i][j]=1;
				cnt[j][i]=1;
		}
	}
	dfs(1,1);
	for(int i=1;i<=n;i++){
		cout<<num[i]<<' ';
	}
	return 0;
}
void dfs(int id,int dep){
	if(ans[id]){
		return;//退 
	}
	ans[id]=1;//顺序不可颠倒 
	for(int i=1;i<=n;i++){
		if(cnt[i][id]&&!ans[i]){
			num[id]++;
			dfs(i,dep+1);
		}
	}
}
1 个赞

题目描述:

已知一棵树,有 N 个结点,编号 1 至 N,其中 1 号是根。求树的节点孩子数。

输入格式:

第一行一个整数 N。(1≤N≤1000)

接下来 N 行每行 N 个 1 或 0,第 i 行第 j 列是 1,表示 i, j 两点有边,否则没有边。

输出格式:

树的节点孩子数量。

样例输入:

10
0110000000
1001000000
1000110001
0100000000
0010000000
0010001000
0000010110
0000001000
0000001000
0010000000

样列输出:

2 1 3 0 0 1 2 0 0 0

2 个赞

AC了

1 个赞