源代码附上
```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