传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2208
大家都说此题是强连通分量+拓扑排序+状压DP,然后蒟蒻看到题后sx的写了暴力……然后……A了……
Code:
#include<cstdio> #include<iostream> #include<vector> #include<cstring> #include<algorithm> using namespace std; const int maxn=2001; vector<int>G[maxn]; void add(int u,int v){ G[u].push_back(v); } int n,cnt; int vis[2001]; void dfs(int x){ for(int i=0;i<G[x].size();i++){ int v=G[x][i]; if(!vis[v]){ cnt++; vis[v]=1; dfs(v); } } } int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ char s[2000]; scanf("%s",s); for(int j=1;j<=n;j++){ if(s[j-1]=='1') add(i,j); } } int ans=0; for(int i=1;i<=n;i++){ memset(vis,0,sizeof(vis)); cnt=0; vis[i]=1; cnt++; dfs(i); ans+=cnt; } printf("%d\n",ans); return 0; }