poj——3660(图论之传递闭包(floyd))

来源:互联网 发布:初中英语软件 人教版 编辑:程序博客网 时间:2024/05/29 14:06

题目地址:http://poj.org/problem?id=3660

注:floyd的另个运用。

#include <iostream>#include <cmath>#include <string>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;typedef long long ll; #define MAX(a,b) a>b?a:b#define MIN(a,b) a>b?b:a#define N 105int a[N][N];int main(){int i,j,k,m,n,num1,num2;while(cin>>n>>m){ memset(a,0,sizeof(a)); while(m--) { cin>>num1>>num2; a[num1][num2]=1;  }  for(i=1;i<=n;i++)   for(j=1;j<=n;j++)    for(k=1;k<=n;k++)    {     if(a[j][i]&&a[i][k]) a[j][k]=1;      }      int ans=0;     for(i=1;i<=n;i++)      {     int temp=0;  for(j=1;j<=n;j++)     temp+=(a[i][j]+a[j][i]);   if(temp==n-1) ans++;      }      cout<<ans<<endl;}return 0;}