博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CF】328 D. Super M
阅读量:7173 次
发布时间:2019-06-29

本文共 2235 字,大约阅读时间需要 7 分钟。

这种图论题已经变得简单了。。。

1 /* D */  2 #include 
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 #include
17 #include
18 #include
19 #include
20 #include
21 using namespace std; 22 //#pragma comment(linker,"/STACK:102400000,1024000") 23 24 #define sti set
25 #define stpii set
> 26 #define mpii map
27 #define vi vector
28 #define pii pair
29 #define vpii vector
> 30 #define rep(i, a, n) for (int i=a;i
=a;--i) 32 #define clr clear 33 #define pb push_back 34 #define mp make_pair 35 #define fir first 36 #define sec second 37 #define all(x) (x).begin(),(x).end() 38 #define SZ(x) ((int)(x).size()) 39 #define lson l, mid, rt<<1 40 #define rson mid+1, r, rt<<1|1 41 42 const int maxn = 123460; 43 vi vc[maxn], vc2[maxn]; 44 bool visit[maxn]; 45 bool mark[maxn]; 46 int markp[maxn], pre[maxn]; 47 int mx[maxn], mx_[maxn]; 48 int n, m, length = 0; 49 int mn = INT_MAX, ans = INT_MAX; 50 51 void bfs(int s) { 52 queue
Q; 53 int u, v, sz; 54 55 Q.push(s); 56 visit[s] = true; 57 pre[s] = 0; 58 59 while (!Q.empty()) { 60 u = Q.front(); 61 Q.pop(); 62 sz = SZ(vc[u]); 63 rep(i, 0, sz) { 64 v = vc[u][i]; 65 if (!visit[v]) { 66 visit[v] = true; 67 pre[v] = u; 68 Q.push(v); 69 } 70 } 71 } 72 } 73 74 void dfs3(int v) { 75 if (visit[v]) 76 return; 77 78 visit[v] = true; 79 int u = pre[v]; 80 81 length += 2; 82 vc2[u].pb(v); 83 vc2[v].pb(u); 84 if (u) 85 dfs3(u); 86 } 87 88 void dfs(int u, int fa) { 89 int v, sz = SZ(vc2[u]); 90 91 mx[u] = mx_[u] = 0; 92 rep(i, 0, sz) { 93 v = vc2[u][i]; 94 if (v == fa) 95 continue; 96 97 dfs(v, u); 98 if (mx[v]+1 > mx[u]) { 99 mx_[u] = mx[u];100 mx[u] = mx[v] + 1;101 } else if (mx[v]+1 > mx_[u]) {102 mx_[u] = mx[v]+1;103 }104 }105 106 #ifndef ONLINE_JUDGE107 printf("u = %d, mx[u] = %d, mx_[u] = %d\n", u, mx[u], mx_[u]);108 #endif109 }110 111 void dfs2(int u, int fa, int pmx) {112 int v, sz = SZ(vc2[u]);113 int cmx = max(mx[u], pmx), tmp;114 115 if (length-cmx < mn) {116 mn = length - cmx;117 ans = u;118 } else if (length-cmx==mn && u

 

转载于:https://www.cnblogs.com/bombe1013/p/4926704.html

你可能感兴趣的文章
How to Install Nextcloud 13 Server on Debian 9
查看>>
[深入理解文件系统之一] IO系统调用
查看>>
Java之implements
查看>>
【资料收集】林内域或者林间域之间的账户、计算机迁移
查看>>
更新windows SID工具,对于虚拟机复制很有用
查看>>
安装TOMCAT
查看>>
Linux网络命令
查看>>
-bash: lsof: command not found 解决方法
查看>>
《.NET应用架构设计:原则、模式与实践》新书博客--试读-2.1.2 设计原则实战
查看>>
大家技术探讨
查看>>
使用Myeclipse自带的xFire来实现WebService
查看>>
《UNIX环境高级编程》apue.h 头文件的问题
查看>>
系统分析师证书求挂靠,请联系qq 369681392
查看>>
ubuntu中root与user相互切换
查看>>
互联网络解剖
查看>>
大话WEB前端性能优化基本套路
查看>>
初识webservice 服务
查看>>
ASP.NET MVC(二)
查看>>
Ext JS 4.1 RC2 Released发布
查看>>
[转载]2012 年 4 月,rating排行榜
查看>>