POJ 3660

233333...

Description:

就是说呢。牛是的实力室友大小之分的。然后呢。告诉你很多pair 表示任意两头牛之间的实力大小。按实力排序之后。问你一共有多少只牛的排名是确定了的。

T_T == 坑了好多WA....应该是 =

好吧。。貌似是拓扑排序的floyd算法。。数据太小。。三重循环水过、就是判断有多少只牛的入度出度和是n-1就欧克了。。。。

代码:

#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;

int map[105][105];

int main()
{
    int n, m;
    while(cin >> n)
    {
        cin >> m;
        memset(map, 0, sizeof(map));
        for (int i=0; i<m; ++i)
        {
            int x, y;
            cin >> x >> y;
            map[x-1][y-1] = 1;
        }
        for (int k=0; k<n; ++k)
        {
            for (int i=0; i<n; ++i)
            {
                for (int j=0; j<n; ++j)
                {
                    if (map[i][k] && map[k][j])
                        map[i][j] = 1;
                }
            }
        }
        int sum = 0;
        int du[210];
        memset(du, 0, sizeof(du));
        for (int i=0; i<n; ++i)
        {
            for (int j=0; j<n; ++j)
            {
                if (map[i][j])
                {
                    du[i]++;
                    du[j]++;
                }
            }
        }
        for (int i=0; i<n; ++i)
        {
            if (du[i] == n-1)
                sum++;
        }
        cout << sum << endl;
    }
    return 0;
}

时间: 2024-12-14 18:07:17

POJ 3660的相关文章

poj 3660 Cow Contest(warshall算法)

poj 3660 Cow Contest Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we all know, some cows code better than others. Each cow has a certain constant skill rating that is unique among the co

ACM: POJ 3660 Cow Contest - Floyd算法

链接 Cow Contest Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Description N (1 ≤ N ≤ 100) cows, conveniently numbered 1..N, are participating in a programming contest. As we all know, some cows code better than others. Eac

kuangbin_ShortPathH (POJ 3660)

本来想自己写个bfs让他顺着胜负边爬 走到拐弯处就判定无法确定次序 然后我发现有多余的边并不会自己省略掉 要写个O(n^3)的删掉多余边这都不如Floyd了 看奚政学长写的是拓扑序也能解 然后在理解看他的文章的时候智商下线了 Floyd都没认出来 最后自己写了个(标准)Floyd 华丽得wa了 然后查出来是i j k 次序写的不好 嗯原始算法还是要复习一下的 有空去学一下拓扑序解法 以上 #include <cstdio> #include <cstring> int main()

poj 3660 传递闭包 **

题意:题目给出了m对的相对关系,求有多少个排名是确定的. 链接:点我 如果这个点到其他点的关系是确定的,那么这个点就是确定的,注意如果这个点到不了其他点,但其他点能到这个点,那么这个点和其他点的关系是确定的 样例图: 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<qu

POJ 3660 (Floyd判断传递闭包)

题目:输入n头牛,m个关系.接下来m行每行两个int数a,b,代表a可以打败b 问:能确定多少头牛的排名 思路:floyd算法可以判断传递闭包问题(通过传递性推导出尽量多的元素之间的关系叫做传递闭包),模板题 #include <iostream> #include <cmath> #include <cstdio> #include <cstring> #include <string> #include <map> #includ

floyd 传递闭包 POJ - 3660

https://vjudge.net/problem/POJ-3660 传递闭包 ,就是把具有传递性的关系传递开,通过一些已知的连边求出点与点之间的关系. 设f[i][j]表示i 与 j 是否联通,f[i][j]=f[i][k]&&f[k][j] 再分析每个点,如果能确定 n-1 个关系,那就可以确定他的排名. 时间复杂度O(N^3) #include <iostream> #include <cstdio> #include <cstring> #in

Cow Contest POJ - 3660 floyd传递闭包

#include<iostream> #include<cstring> using namespace std; const int N=110,INF=0x3f3f3f3f; int f[N][N]; int main() { int n,m; cin>>n>>m; memset(f,0x3f,sizeof f); int x,y; for(int i=0;i<m;i++) { cin>>x>>y; //x>y f[x

poj 最短路径题目总会

求最短路基本的算法:1>Dijkstra算法2>Bellman-Ford算法3>Floyd算法4>Floyd-Warshall算法5>Johnson算法6>A*算法题目: 1.poj1062 昂贵的聘礼(中等) 此题是个经典题目:用Dijkstra即可:但是其中的等级处理需要一定的技巧: 要理解好那个等级制度:这个处理好,基本就是裸体Dijkstra: 2 poj1125 Stockbroker Grapevine(基本) 这个是简单Floyd,需要求出的是每对顶点之间

[kuangbin带你飞]专题四 最短路练习

A. POJ 2387  Til the Cows Come Home 模板题. #include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<vector> #include<string> #include<map> #include<queue> #in