POJ3660

3660

放水题是不是不太好...

#include<cstdio>
#include<algorithm>
using namespace std;

int e[105][105];
int maxx[105];
int minn[105];
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1; i<=m; i++)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        e[b][a]=1;
    }
    for(int k=1; k<=n; k++)
        for(int i=1; i<=n; i++)
            for(int j=1; j<=n; j++)
                e[i][j]|=e[i][k]&e[k][j];
    for(int i=1; i<=n; i++)
        for(int j=1; j<=n; j++)
        {
            if(e[i][j])
            {
                minn[j]++;
                maxx[i]++;
            }
        }
    int ans=0;
    for(int i=1; i<=n; i++)
    {
//        printf("%d %d
",maxx[i],minn[i]);
        if((maxx[i]+minn[i])==(n-1))
            ans++;
    }
    printf("%d",ans);
}
原文地址:https://www.cnblogs.com/dongdong25800/p/11196025.html