P3225 MLE求助

学术版

源代码附上 ```cpp #include<iostream> #include<cstdio> #include<cstdlib> #include<vector> using namespace std; const int SIZE=505; long long count=1,n,m=-1,dfn[SIZE]={},maxn=0,low[SIZE],cla[SIZE],ans1=0,ans2=1,numdi,clad,times=0; //dfn==时间戳,cla为组的编号 bool t[SIZE]; vector <int> way[SIZE]; void tarjin(long long num,long long fat); void dfs(long long num); int main(){ long long x,y; while(m!=0){ ++times; cin>>m;//读入通道数 if(m==0) break;//退出判断 for(long long i=1;i<=m;i++){ cin>>x>>y; //以通道中出现的最大值作为点的数量 if(x>maxn)maxn=x; if(y>maxn)maxn=y; //不定长数组 如果way[x]==y代表x可以通到y way[x].push_back(y); way[y].push_back(x); } n=maxn;maxn=0;//点数求值归零 for(long long i=1;i<=n;i++){ t[i]=0;dfn[i]=0;low[i]=0;cla[i]=0; //t是判断是否为割点 (1是) } for(long long i=1;i<=n;i++) if(dfn[i]==0) tarjin(i,0);//tarjin求割点 count=0; for(long long i=1;i<=n;i++){ if(t[i]!=1&&cla[i]==0){//如果该点未走过且不是割点 cla[i]=count;//此点为count号组的一员 dfs(i); for(long long j=1;j<=n;j++){ /*当这个点是割点且是此组*/if(t[j]==1&&cla[j]==count){ ++numdi;//求割点数量 cla[j]=0;//割点不能放入组内,下次还要求 } else if(cla[j]==count) ++clad;//求组内点的数量 } if(numdi==1){ ans1+=1;ans2*=clad; } else if(numdi==0){ ans1+=2;ans2*=clad*(clad-1)/2; } } ++count;numdi=0;clad=0; } for(long long i=1;i<=n;i++) way[i].clear(); count=1; cout<<"Case "<<times<<": "<<ans1<<" "<<ans2<<endl; ans1=0;ans2=1; } return 0; } void tarjin(long long num,long long fat){ long long sonnum=0; dfn[num]=count++;low[num]=dfn[num]; for(long long i=0;i<way[num].size();i++){ if(way[num][i]==fat) continue; if(dfn[way[num][i]]==0){ ++sonnum; tarjin(way[num][i],num); low[num]=min(low[num],low[way[num][i]]); if(low[way[num][i]]>=dfn[num]) t[num]=1; } else low[num]=min(low[num],dfn[way[num][i]]); } if(fat==0&&sonnum==1) t[num]=0; return; } void dfs(long long num){ for(long long i=0;i<way[num].size();i++){ if(cla[way[num][i]]==0){ cla[way[num][i]]=count; if(t[way[num][i]]!=1) dfs(way[num][i]); } } return; } ```
by Jameswood @ 2018-06-10 21:39:31


原题连接 [P3225 [HNOI2012]矿场搭建](https://www.luogu.org/problemnew/show/P3225) 地上打滚求神犇和红名大佬帮忙
by Jameswood @ 2018-06-10 21:43:56


前排膜拜神仙
by strangers @ 2018-06-10 22:43:04


|