树的深度 XJOI
树的深度
题目:http://115.236.49.52:83/problem/9520
题目描述:
已知一棵树,有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
题意
给棵树,求其深度
题解
DFS求解
CODE
#include <cstdio>
#include <iostream>
using namespace std;
int n, tot;
string s[1010];
bool a[1010][1010];
void dfs(int k, int sum){//第k个节点,深度为sum
for(int i = 1; i <= n; i++){//扫一遍
if(a[i][k]){
a[i][k] = a[k][i] = false;
dfs(i, sum + 1);
a[i][k] = a[k][i] = true;
}
}
if(sum > tot){//更新
tot = sum;
}
return ;
}
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i++){
cin >> s[i];
}
for(int i = 1; i <= n; i++){//存
for(int j = 1; j <= n; j++){
if(s[i][j-1] == '1'){
a[i][j] = a[j][i] = 1;
}
}
}
dfs(1, 0);
printf("%d\n", tot);
return 0;
}
没有未来的未来不是我想要的未来

浙公网安备 33010602011771号