今天有点累.....写了几道签到题溜了
无脑前向星暴力.......
/**************************************************************
Problem: 2208
User: syh0313
Language: C++
Result: Accepted
Time:12168 ms
Memory:48168 kb
****************************************************************/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
using namespace std;
const int maxe=4000010;
const int maxd=2010;
char s[maxd];
int n,ans,len,topt,st[maxe],to[maxe],nt[maxe];
bool f[maxd];
void add(int x,int y)
{to[++topt]=y; nt[topt]=st[x]; st[x]=topt;}
void dfs(int x)
{
f[x]=1; ans++; int p=st[x];
while (p) {if (!f[to[p]])dfs(to[p]); p=nt[p];}
}
int main()
{
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%s",s+1); len=strlen(s+1);
for (int j=1;j<=len;j++)
if (s[j]=='1') add(i,j);
}
for (int i=1;i<=n;i++) {memset(f,0,sizeof f); dfs(i);}
printf("%d\n",ans);
return 0;
}
本文分享了一道编号为2208的图论题的C++解题思路及代码实现,采用前向星存储结构进行无脑暴力求解,通过深度优先搜索(DFS)遍历所有节点,计算连通分量。
299

被折叠的 条评论
为什么被折叠?



