2015
09-17

# TWO NODES

Suppose that G is an undirected graph, and the value of stab is defined as follows:

Among the expression,G-i, -j is the remainder after removing node i, node j and all edges that are directly relevant to the previous two nodes. cntCompent is the number of connected components of X independently.
Thus, given a certain undirected graph G, you are supposed to calculating the value of stab.

The input will contain the description of several graphs. For each graph, the description consist of an integer N for the number of nodes, an integer M for the number of edges, and M pairs of integers for edges (3<=N,M<=5000).
Please note that the endpoints of edge is marked in the range of [0,N-1], and input cases ends with EOF.

The input will contain the description of several graphs. For each graph, the description consist of an integer N for the number of nodes, an integer M for the number of edges, and M pairs of integers for edges (3<=N,M<=5000).
Please note that the endpoints of edge is marked in the range of [0,N-1], and input cases ends with EOF.

4 5
0 1
1 2
2 3
3 0
0 2

2

#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#define inf 0x3f3f3f3f
#define Inf 0x3FFFFFFFFFFFFFFFLL
#define eps 1e-9
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
const int maxn=5000+10;
int pre[maxn],vis[maxn],dfs_clock;
int ans,ban,total,step,n,m,temp;
vector<int>G[maxn];
int tarjan(int u,int fa)
{
bool iscut=false;
int child=0,cutnum=0;
int lowu=pre[u]=++dfs_clock;
for(int i=0;i<G[u].size();++i)
{
int v=G[u][i];
if(v==ban) continue;
if(!pre[v])
{
child++;
int lowv=tarjan(v,u);
lowu=min(lowu,lowv);
if(lowv>=pre[u])
{
iscut=true;
cutnum++;
}
}
else if(pre[v]<pre[u]&&v!=fa)
lowu=min(lowu,pre[v]);
}
if(fa<0&&child==1) iscut=false;
if(child==0&&fa==-1) ans=max(ans,total-1);
if(iscut)
ans=max(ans,total+cutnum-(int)(fa==-1));
return lowu;
}
void dfs(int u)
{
temp++;
vis[u]=step;
for(int i=0;i<G[u].size();++i)
{
int v=G[u][i];
if(vis[v]!=step&&v!=ban)
dfs(v);
}
}
void find_conn(int x)
{
step++;
total=0;
ban=x;
bool flag=false;
for(int i=0;i<n;++i)
{
if(vis[i]!=step&&i!=ban)
{
temp=0;
dfs(i);
total++;
if(temp>=2) flag=true;
}
}
if(flag) ans=max(ans,total);
memset(pre,0,sizeof(pre));
dfs_clock=0;
for(int i=0;i<n;++i)
if(!pre[i]&&i!=ban) tarjan(i,-1);
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
while(~scanf("%d%d",&n,&m))
{
int a,b;
for(int i=0;i<n;++i) G[i].clear();
for(int i=0;i<m;++i)
{
scanf("%d%d",&a,&b);
G[a].push_back(b);
G[b].push_back(a);
}
memset(vis,0,sizeof(vis));
ans=0;step=0;
for(int i=0;i<n;++i)
find_conn(i);
printf("%d\n",ans);
}
return 0;
}


, ,
1. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

2. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

3. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

4. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

5. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

6. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

7. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

8. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

9. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

10. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

11. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

12. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

13. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

14. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

15. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

16. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

17. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

18. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

19. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了

20. 首先，作者辛苦。但是此MOD还有几个问题：①游戏开场也就是开始商人任务不能跳过，但选继续就会跳出游戏，屡试不爽。②那么就只有选小兵模式，这个倒是可以进入大地图了，但是角色一加技能点就会重复第一步，跳出。③小兵模式进去后直接到《超市》浏览了所有装备，加进了