How Many Dependencies?

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

分析:搜索。可以利用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;}

一个人的天地是冷得连呼吸都会寂寞的颤栗,而麻烦,

How Many Dependencies?

相关文章:

你感兴趣的文章:

标签云: