laoshi讲完P2419后我花了五分钟一口气敲出来了这段AC代码,有同学吐槽说码风潦草,怎么可能??
代码见下:
#include<iostream>
#define re register
using namespace std;
const int N = 5e3 + 5;
int n,m,ans;
bool dp[N][N];
int main(){
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
cin>>n>>m;
for(re int i = 1;i <= m;i ++){
int a,b;
cin>>a>>b;
dp[a][b] = true;
}
for(re int k = 1;k <= n;k ++){
for(re int i = 1;i <= n;i ++){
for(re int j = 1;j <= n;j ++){
dp[i][j] = dp[i][j] || (dp[i][k] && dp[k][j]);
}
}
}
for(re int i = 1;i <= n;i ++){
int tmp = 1;
for(re int j = 1;j <= n;j ++){
if(i == j){
continue;
}
tmp = tmp && (dp[i][j] || dp[j][i]);
}
ans += tmp;
}
cout<<ans<<"\n";
return 0;
}