tarjan+拓排应该是正解吧
然而我上去就打了个tarjan和dijkstra
(由于我抄题解抄多了,代码能力极差,于是我就gg了)
题解中有大佬直接用dfs过了8个点,再吸口氧就AC了
(这还是人嘛)
吸氧dfs
#include<cstdio>
#include<cstring>
using namespace std;
int n,ans;
char G[2001][2001];
bool vis[2001];
void dfs(int u)
{
ans++;
vis[u] = 1;
for(int i = 0;i < n;i++)
if (G[u][i] == '1' && !vis[i])
dfs(i);
}
int main()
{
scanf("%d",&n);
for(int i = 0;i < n;i++)
scanf("%s",G[i]);
for(int i = 0;i < n;i++)
{
memset(vis,0,sizeof(vis));
dfs(i);
}
printf("%d
",ans);
return 0;
}
咕了吧还是,,,是我太水了