UVa 10926 - How Many Dependencies?

来源:互联网 发布:如何做淘宝客服兼职 编辑:程序博客网 时间:2024/05/17 01:09

题目:给你一下任务以及这些任务的依赖关系,求有最长依赖关系链的任务。

分析:搜索。可以利用dfs或者记忆化搜索。

           (因为没有环是树状结构,所以每个根计算时的解就是最终结果,不会被更新)。

说明:每次要清空标记的数组。

#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;int maps[101][101];int used[101];int dfs(int s, int n){if (used[s]) return used[s];int Max = 0;for (int i = 1 ; i <= n ; ++ i)if (maps[s][i]) Max = max(Max, dfs(i, n)+1);return used[s] = Max;}int main(){int n,m,p;while (~scanf("%d",&n) && n) {memset(maps, 0, sizeof(maps));memset(used, 0, sizeof(used));for (int i = 1 ; i <= n ; ++ i) {scanf("%d",&m);for (int j = 1 ;  j <= m ; ++ j) {scanf("%d",&p);maps[i][p] = 1;}maps[0][i] = 1;}dfs(0, n);int space = 1;for (int i = 2 ; i <= n ; ++ i) if (used[space] < used[i])space = i;printf("%d\n",space);}    return 0;}



0 0
原创粉丝点击