2 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N = 1010; bool G[N][N]; bool res[N]; int deg[N]; int main(){ freopen("p.in","r",stdin); freopen("p.out","w",stdout); int t; cin >> t; while(t --){ memset(G,0,sizeof G); memset(deg,0,sizeof deg); memset(res,true,sizeof res); int ans = 0; int n; cin >> n; for (int i = 1; i < n; i ++) { int x, y; cin >> x >> y; G[x][y] = 1; deg[x] ++; } //cout << deg[5] << endl; for (int i = 1; i <= n; i ++) { for (int j = 1; j <= n; j ++) { if (G[i][j] && deg[i] < deg[j]){ res[i] = false; break; } if(G[j][i] && deg[i] < deg[j]){ res[i] = false; break; } } } ans = 0; for (int i = 1; i <= n; i ++) if(res[i]) { //cout << i << endl; ans++; } cout << ans << endl; } return 0; }
-
0
#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; }
- 1
信息
- ID
- 436
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 336
- 已通过
- 34
- 上传者