kuangbin_ShortPath H (POJ 3660)

本来想自己写个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
", res);
    return 0;
}
原文地址:https://www.cnblogs.com/quasar/p/5084079.html