```
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#define si 100006
using namespace std;
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
int n,m,a,b,low[si],nums[si],dfn[si],num,vis[si];
vector<int> map[si];
void tarjan(int x,int fa)
{
low[x]=dfn[x]=++num;
int tot=0;
for(int i=0;i<map[x].size();i++)
{
int v=map[x][i];
if(dfn[v]==0)
{
tarjan(v,fa);
low[x]=min(low[x],low[v]);
if(low[v]>=dfn[x]&&x!=fa) vis[x]=1;
if(x==fa) tot++;
}
low[x]=min(low[x],dfn[v]);
}
if(x==fa&&tot>=2) vis[x]=1;
}
void pd(int x)
{
nums[x]=(dfn[x]-1)*(n-dfn[x]+1)+(n-dfn[x])*dfn[x]+n-1;
}
int main()
{
memset (dfn,0,sizeof (dfn));
n=read();m=read();
for(int i=1;i<=m;i++)
{
a=read();b=read();
map[a].push_back(b);
map[b].push_back(a);
}
for(int i=1;i<=n;i++)
if(dfn[i]==0)
tarjan(i,i);
for(int i=1;i<=n;i++)
{
if(vis[i]==1)
{
int q;
for(int j=0;j<map[i].size();j++)
{
if(dfn[map[i][j]]>dfn[i])
q=dfn[map[i][j]];
}
nums[i]=(n-q+1)*(q-1)+(q-2)*(n-q+1+1)+(n-1);
}
else nums[i]=(n-1)*2;
}
for(int i=1;i<=n;i++)
{
cout<<nums[i]<<endl;
}
return 0;
}
```
by PrincessYR✨~ @ 2020-03-05 05:35:34
为什么没有人回复,是太弱智了吗
by PrincessYR✨~ @ 2020-03-05 05:51:20
应该是宁太巨了QAQ
by Tristen @ 2020-03-05 08:25:42