求有几个割点。数据比较水,用了朴素方法。。。30ms。。。
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<algorithm> using namespace std; char s[1000000]; int n,u,v,tot,len,sum; const int INF=0x7FFFFFFF; const int MAXN=105; vector<int>G[MAXN]; int fail[MAXN],flag[MAXN]; void DFS(int now) { int i; for(i=0; i<G[now].size(); i++) { if(!flag[G[now][i]]&&!fail[G[now][i]]) { flag[G[now][i]]=1; DFS(G[now][i]); } } } int main() { int i,ii; while(~scanf("%d",&n)&&n) { for(i=0; i<=n; i++) G[i].clear(); memset(flag,0,sizeof(flag)); memset(fail,0,sizeof(fail)); while(gets(s)) { if(strcmp(s,"0")==0) break; len=strlen(s); u=INF; sum=0; for(i=0; i<=len; i++) { if(s[i]==' '||s[i]=='