View Code of Problem 1060

#include<cstdio>
#include<cstring>
#include<iostream>
#define N 101
using namespace std;
bool map[N][N];
int n,m;
int main(void)
{
    int t;
    cin>>t;
    while(t--)
    {
      memset(map,false,sizeof(map));
      int num = 0;
      cin>>n>>m;
      int flag = n/2;
      for(int i=1;i<=m;++i)
      {
        int a,b;
        scanf("%d %d",&a,&b);
        map[a][b] = true;
      }
      for(int k=1;k<=n;++k)
       for(int i=1;i<=n;++i)
        for(int j=1;j<=n;++j)
         if((map[i][k]&&map[k][j])||map[i][j])
            map[i][j] = true;
      int tmp;
      for(int i=1;i<=n;++i)
      {
          tmp = 0;
        for(int j=1;j<=n;++j)
        if(map[j][i])
        ++tmp;
        if(tmp>flag)
          ++num;

      }
      for(int i=1;i<=n;++i)
      {
          tmp = 0;
          for(int j=1;j<=n;++j)
            if(map[i][j])
            ++tmp;
          if(tmp>flag)
            ++num;
      }
      cout<<num<<endl;
    }

    return 0;
}

Double click to view unformatted code.


Back to problem 1060