HDU 4587 割点
2016-05-11 11:01
204 查看
点击打开链接
题意:给一个无向图,可能是不连通的,问删除两个点之后联通块最多的数量,两个点随意
思路:之前写过一个删除一个点的剩余联通块的题目,和这个差不多嘛,但是要注意细节,WA了10多次,对于一个5000个点和5000条边的图来说,我们可以先去枚举删除一个点,然后剩下的操作就和删除一个点的相同了我们找到最大的cnt,cnt记录的是这个点删除后的联通块个数-1;具体细节看代码把,注意这种情况,一组数据
3 3
0 1
0 2
0 3
输出2,我之前写的一直输出3,处理了一下才过掉
题意:给一个无向图,可能是不连通的,问删除两个点之后联通块最多的数量,两个点随意
思路:之前写过一个删除一个点的剩余联通块的题目,和这个差不多嘛,但是要注意细节,WA了10多次,对于一个5000个点和5000条边的图来说,我们可以先去枚举删除一个点,然后剩下的操作就和删除一个点的相同了我们找到最大的cnt,cnt记录的是这个点删除后的联通块个数-1;具体细节看代码把,注意这种情况,一组数据
3 3
0 1
0 2
0 3
输出2,我之前写的一直输出3,处理了一下才过掉
#include <vector> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; const int maxn=5010; vector<int>G[maxn]; int E[maxn],L[maxn],vis[maxn],cnt[maxn]; int k,kk; void dfs(int x,int fa,int xx){ k++;E[x]=k;L[x]=k;vis[x]=1; for(unsigned int i=0;i<G[x].size();i++){ int t=G[x][i]; if(t==fa) continue; if(!vis[t]){ dfs(t,fa,xx); L[x]=min(L[x],L[t]); if(L[t]>=E[x]&&x!=xx) cnt[x]++; else if(x==xx) kk++; }else L[x]=min(L[x],E[t]); } } int slove(int n){ int ans=0; for(int i=1;i<=n;i++){ int sum=0,max1=-inf; memset(vis,0,sizeof(vis)); memset(cnt,0,sizeof(cnt)); for(int j=1;j<=n;j++){ if(!vis[j]&&i!=j){ sum++;k=0;kk=0; dfs(j,i,j); if(kk>=2) cnt[j]=kk-1; else cnt[j]=-1; } } for(int j=1;j<=n;j++){ if(i!=j){ if(cnt[j]>max1) max1=cnt[j]; } } ans=max(ans,sum+max1); } return ans; } int main(){ int n,a,b,m; while(scanf("%d%d",&n,&m)!=EOF){ for(int i=0;i<maxn;i++) G[i].clear(); for(int i=0;i<m;i++){ scanf("%d%d",&a,&b); a++;b++; G[a].push_back(b); G[b].push_back(a); } int ans=slove(n); printf("%d\n",ans); } return 0; }
相关文章推荐
- HashMap 输出键值得两种方式
- Hashtable的源码分析
- hdu 4135 Co-prime 容斥原理
- 学习进度11
- Softmax回归(Softmax Regression)
- 0511 backlog 项目管理
- Visual Studio 2012以后无法保存只读文件的问题
- nginx负载均衡模块
- dedecms的问题
- 文章标题
- Android Studio导入SlidingMenu类库
- 软件测试上机实验(一)
- SharePreference的两个小细节
- 关于js中namespace命名空间模式
- 关于js中namespace命名空间模式
- 关于js中namespace命名空间模式
- 关于js中namespace命名空间模式
- 在首席架构师手里,应用架构如此设计
- 在首席架构师手里,应用架构如此设计
- 在首席架构师手里,应用架构如此设计