2 条题解

  • 0
    @ 2025-1-17 9:18:35
    #include<bits/stdc++.h>
    using namespace std;
    int deg[1010];//每一个结点的度数 
    int fa[1010];//每一个点的父亲结点
    int main(){
    	freopen("p.in","r",stdin);
    	freopen("p.out","w",stdout);
    	int t;
    	cin >> t;
    	while(t --){
    		vector<int> vec[1010];//每一个的儿子编号  
    		memset(deg,0,sizeof deg);
    		memset(fa, 0, sizeof fa); 
    		int n;
    		cin >> n;
    		for (int i = 1; i <= n-1; i ++){
    			int x, y;
    			cin >> x >> y;
    			vec[x].push_back(y);
    			fa[y] = x;
    			deg[x] ++;
    		}
    		int cnt = 0;
    		for (int i = 1; i <= n; i ++){//i代表结点编号 
    			bool flag = true;//代表i这个结点是否大于等于儿子结点的度 
    			for (int j = 0; j < vec[i].size(); j ++){
    					//j表示vector数组的下标
    					int u = vec[i][j];//与编号为i结点的儿子结点编号
    					if(deg[i] < deg[u]){
    						flag = false;
    						break;
    					} 
    			}
    			int v = fa[i];//i结点的父亲结点编号 
    			if(deg[i] >= deg[v] && flag){
    				cnt ++;
    			}
    		}
    		cout << cnt << endl;
    	}
    	
    	
    	return 0;
    }
    

    信息

    ID
    436
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    336
    已通过
    34
    上传者