UVA 10926--How Many Dependencies?
2017-12-14 14:35
465 查看
题意:输出依赖度最大的点的编号,如果存在多个相同则输出编号较小的点。
例 A->B->C 依赖度2
例 A->B A->C 依赖度1
分析:dfs暴力搜索
注释:刚开始写这个题目的时候利用dfs暴力搜索每个点的最长串,TLE。
解法:搜索到最后一层赋值为1,返回判断前一层的值与该层+1的值的大小。
分析:dfs暴力搜索
注释:刚开始写这个题目的时候利用dfs暴力搜索每个点求跟随点个数,TLE。
解法:搜索到最后一层赋值为1,返回判断前一层的值+1与该层的值大小判断。
例 A->B->C 依赖度2
例 A->B A->C 依赖度1
分析:dfs暴力搜索
注释:刚开始写这个题目的时候利用dfs暴力搜索每个点的最长串,TLE。
解法:搜索到最后一层赋值为1,返回判断前一层的值与该层+1的值的大小。
#include<bits/stdc++.h> using namespace std; const int Max=300; int n,num,a; int G[Max][Max],vis[Max]; int dfs(int x) { if(vis[x]) return vis[x]; int maxn=1; for(int i=1; i<=n; i++) { if(G[x][i]==1) { maxn=max(maxn,dfs(i)+1); } } vis[x]=maxn; return maxn; } int main() { while(scanf("%d",&n)!=-1&&n) { memset(G,0,sizeof(G)); memset(vis,0,sizeof(vis)); for(int i=1; i<=n; i++) { scanf("%d",&num); for(int j=1; j<=num; j++) { scanf("%d",&a); G[i][a]=1; } } int flag=1; for(int i=1; i<=n; i++) { dfs(i); } for(int i=2; i<=n; i++) { if(vis[flag]<vis[i]) flag=i; } printf("%d\n",flag); } return 0; }
分析:dfs暴力搜索
注释:刚开始写这个题目的时候利用dfs暴力搜索每个点求跟随点个数,TLE。
解法:搜索到最后一层赋值为1,返回判断前一层的值+1与该层的值大小判断。
相关文章推荐
- dfs-uva 10926 How Many Dependencies
- UVA 10926 How Many Dependencies?
- UVa 10926 - How Many Dependencies?
- Uva 11038 - How Many O's?
- uva 10213 How Many Pieces of Land 分割圆 高精度
- uva 11038 How Many O's? 组合计数
- UVA 10061 How many zero's and how many digits ?(数论)
- UVa 10183 - How Many Fibs?
- UVA - 10790 How Many Points of Intersection?
- UVa 10061 - How many zero's and how many digits ?
- uva 10183 How many Fibs?
- uva 10061 How many zero's and how many digits ?(在不同进制下分解因子)
- UVA 10303 - How Many Trees?(卡特兰数列)
- UVA - 10183 - How Many Fibs? (斐波那契 + 高精度)
- UVa Problem Solution: 10213 - How Many Pieces of Land?
- UVa 10061: How many zero's and how many digits?
- UVa 10790 - How Many Points of Intersection?
- (计算几何8.1.3.1)UVA 10213 How Many Pieces of Land?(使用欧拉公式的应用顶点数+面数-棱数 = 2)
- UVA 10061 How many zeros and how many digits?
- UVa:11038 How Many O's?