#include<bits/stdc++.h>
using namespace std;
int n,m;
int dfn[10101],low[10101],cnt=0;
long long ans[10101],size[10101];
bool IF[10101];
vector<int>G[10101];
void add(int u,int v){
G[u].push_back(v);
G[v].push_back(u);
}
void tarjan(int u){
dfn[u]=low[u]=++cnt;
size[u]=1;
int flag=0,sum=0;
for(int i=0;i<G[u].size();i++){
int v=G[u][i];
if(!dfn[v]){
tarjan(v);
size[u]+=size[v];
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u]){
ans[u]+=1ll*size[v]*(n-size[v]);
sum+=size[v];
flag++;
if(u!=1)IF[u]=1;
if(flag>1)IF[u]=1;
}
}else low[u]=min(low[u],dfn[v]);
}
if(IF[u])ans[u]+=1ll*((n-sum-1)*(sum+1)+n-1);
else ans[u]=2*(n-1);
}
void In(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int t1,t2;
scanf("%d%d",&t1,&t2);
add(t1,t2);
}
}//
void Work(){
tarjan(1);
for(int i=1;i<=n;i++)printf("\t\t%d %d\n",IF[i],ans[i]);
}
int main(){
In();
Work();
return 0;
}
只有第3个点过了