2208: [Jsoi2010]连通数
题目:传送门
题解:
强烈吐槽(表示自己想复杂了)
看到这个破题就直接想强联通,错了很久看一波路牌,发现没错,但是要bitset(蒟蒻不会啊)
水了个dfs准备等下对拍....tmdA了!!!
不想多说...
代码:
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 struct node 8 { 9 ????int x,y,next;10 }a[4100000];11 int len,last[410000];12 void ins(int x,int y)13 {14 ????len++;15 ????a[len].x=x;a[len].y=y;16 ????a[len].next=last[x];last[x]=len;17 }18 bool v[2100];19 char st[2100];20 void dfs(int x)21 {22 ????v[x]=1;23 ????for(int k=last[x];k;k=a[k].next)24 ????????if(v[a[k].y]==false)dfs(a[k].y);25 }26 int main()27 {28 ????int n;29 ????scanf("%d",&n);30 ????len=0;memset(last,0,sizeof(last));31 ????for(int i=1;i<=n;i++)32 ????{33 ????????scanf("%s",st+1);34 ????????for(int j=1;j<=n;j++)35 ????????????if(st[j]==‘1‘)36 ????????????????ins(i,j);37 ????}38 ????int ans=0;39 ????for(int i=1;i<=n;i++)40 ????{41 ????????memset(v,false,sizeof(v));dfs(i);42 ????????for(int j=1;j<=n;j++)ans+=v[j];43 ????}44 ????printf("%d\n",ans);45 ????return 0;46 }
bzoj2208: [Jsoi2010]连通数(dfs)
原文地址:https://www.cnblogs.com/CHerish_OI/p/8497049.html