题解——code[vs] 1506 传话(传递闭包)

裸的传递闭包

直接Floyd暴力即可

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m,mat[1010][1010];
int main(){
  scanf("%d %d",&n,&m);
  for(int i=1;i<=m;i++){
    int a,b;
    scanf("%d %d",&a,&b);
    mat[a][b]=1;
  }
  for(int k=1;k<=n;k++)
    for(int i=1;i<=n;i++)
      for(int j=1;j<=n;j++)
        if(mat[i][k]&&mat[k][j])
          mat[i][j]=1;
  for(int i=1;i<=n;i++)
    if(mat[i][i])
      printf("T\n");
    else
      printf("F\n");
  return 0;
}

 

posted @ 2018-09-07 15:01  dreagonm  阅读(214)  评论(0编辑  收藏  举报