标签:
本来想自己写个bfs让他顺着胜负边爬 走到拐弯处就判定无法确定次序
然后我发现有多余的边并不会自己省略掉 要写个O(n^3)的删掉多余边这都不如Floyd了
看奚政学长写的是拓扑序也能解 然后在理解看他的文章的时候智商下线了 Floyd都没认出来
最后自己写了个(标准)Floyd 华丽得wa了 然后查出来是i j k 次序写的不好 嗯原始算法还是要复习一下的
有空去学一下拓扑序解法 以上
#include <cstdio> #include <cstring> int main() { int map[110][110]; int n, m; memset(map, 0, sizeof map); scanf("%d%d", &n, &m); while(m--){ int a, b; scanf("%d%d", &a, &b); map[a][b] = 1; } for(int i = 1; i <= n; i++){ for(int j = 1; j <= n; j++){ for(int k = 1; k <= n; k++){ if(map[j][i] && map[i][k]){ map[j][k] = 1; } } } } int res = 0; for(int i = 1; i <= n; i++){ int count = 0; for(int j = 1; j <= n; j++){ count += map[i][j] + map[j][i]; } if(count == n - 1 ) res++; } printf("%d\n", res); return 0; }
kuangbin_ShortPathH (POJ 3660)
标签:
原文地址:http://www.cnblogs.com/quasar/p/5084079.html