2014 UESTC Training for Graph Theory C
来源:互联网 发布:嵌入式系统编程 扫描版 编辑:程序博客网 时间:2024/05/22 10:51
求割顶,每个割顶可以将联通分量数量+1
如果割顶数目小于K,那么注意多余的点是不能增加联通分量的
如果割顶数目小于K,那么注意多余的点是不能增加联通分量的
另外注意dfs的第一个点要特殊处理一下
#include <map>#include <set>#include <list>#include <cmath>#include<cctype>#include <ctime>#include <deque>#include <stack>#include <queue>#include <cstdio>#include <string>#include <vector>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b){return a % b == 0 ? b : gcd(b, a % b);}int N,M,K;#define MAXN 10003int pre[MAXN],dfs_clock,bcc_cnt;vector<int > G[MAXN];bool used[MAXN];int base;struct node{ int id;//缂栧彿 int iscut;//鍒嗗壊鎴愬嚑鍧? friend bool operator < (const node &a,const node &b) { if (a.iscut==b.iscut) return a.id<b.id; return a.iscut>b.iscut; }}src[MAXN];void read(){ int a,b; memset(used,0,sizeof(used)); 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); }}int dfs(int u,int fa){ int lowu=pre[u]=++dfs_clock; int child=0; for (int i=0;i<(int)G[u].size();i++) { int v=G[u][i]; if (!pre[v]) { child++; int lowv=dfs(v,u); lowu=min(lowu,lowv); if (lowv>=pre[u]) { src[u].iscut++; bcc_cnt++; } } else if (pre[v]<pre[u] && v!=fa) { lowu=min(lowu,pre[v]); } } if (fa<0 && child==1)src[u].iscut=0; return lowu;}void find(){ memset(pre,0,sizeof(pre)); for (int i=0;i<N;i++) { src[i].id=i; src[i].iscut=0; } //memset(bccno,0,sizeof(bccno)); dfs_clock=bcc_cnt=0; for (int i=0;i<N;i++) if (!pre[i]) {base++;dfs(i,-1);}}int main(){ //freopen("sample.txt","r",stdin); while (scanf("%d%d%d",&N,&M,&K)!=EOF) { base=0; read(); find(); int cas=0; if (src[0].iscut>0) src[0].iscut--; sort(src,src+N); //printf("%d\n",bcc_cnt); for (int i=0;i<K;i++) { // if (src[i].iscut==0) break; printf("%d %d\n",src[i].id,src[i].iscut+base); used[src[i].id]=true; cas++; } putchar('\n'); } return 0;}
0 0
- 2014 UESTC Training for Graph Theory C
- 2014 UESTC Training for Graph Theory B
- 2014 UESTC Training for Graph Theory F
- 2014 UESTC Training for Graph Theory G
- 2014 UESTC Training for Graph Theory H
- 2014 UESTC Training for Graph Theory I
- 2014 UESTC Training for Graph Theory J
- 2014 UESTC Training for Graph Theory K
- 2014 UESTC Training for Graph Theory L
- UESTC Training for Graph Theory——c、Catenyms
- 2014 UESTC Training for Graph Theory Problem F 握手
- 2014 UESTC Training for Graph Theory Problem K WHITE ALBUM
- 2016 UESTC Training for Graph Theory
- 2017 UESTC Training for Graph Theory
- 2017 UESTC Training for Graph Theory 题解
- UESTC Training for Graph Theory——A、Railway
- UESTC Training for Graph Theory——B、Asteroids
- UESTC Training for Graph Theory——D、Distance Queries
- 黑马程序员_javaBean类和代理
- 如风一样,飞翔------Day37
- 期末上机赛解题报告及标程
- 实现真·转发效果的Twitter 移动端
- 2014 UESTC Training for Graph Theory B
- 2014 UESTC Training for Graph Theory C
- 脱离jsonp,如何跨域读取、提交数据
- 2014 UESTC Training for Graph Theory F
- win8系统下Ctrl+Alt+方向键的困扰
- 2014 UESTC Training for Graph Theory G
- DB2 runstats、reorgchk、reorg 命令
- leetcode:Single Number II
- 2014 UESTC Training for Graph Theory H
- 2014 UESTC Training for Graph Theory I