题解——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; }