码迷,mamicode.com
首页 > 其他好文 > 详细

kuangbin_ShortPathH (POJ 3660)

时间:2015-12-28 21:54:13      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

本来想自己写个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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!