传送门

题意:给定无向连通图和起点S,每个点有权值,求遍历无向图得到的最大权值和。但是不能走回头路,即如果从U走到V那么下一步不可以从V走到U。

分析:将图分成两种组成,一种是环,一种是链。对于S所在的环,肯定可以遍历这个环回到S。对于其他的环,肯定可以走到这个环中,遍历这个环,然后原路返回。那么最优解就是首先遍历所有的环,连接这些环的链也可以被遍历到,然后选择一条最大的链走到尽头。

#include <bits/stdc++.h>
#define mp make_pair
#define mst(a,n) memset(a, n, sizeof(a))
#define debug(x) cout << #x << ": " << x << endl
#define pb push_back
typedef long long LL;
const int maxn = 2e5 + 10;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
using namespace std;
int f[maxn], n, m, u, v, cnt[maxn], s, fa[maxn], vis[maxn], dep[maxn];
LL w[maxn], dp[maxn], ans = -1;
vector<int> g[maxn];
int find(int x) {return f[x] == -1 ? x : f[x] = find(f[x]);
}
void dfs(int now, int pre) {vis[now] = true;dep[now] = dep[pre] + 1;for (int i = 0; i < g[now].size(); ++i) {int to = g[now][i];if (to == pre)continue;if (!vis[to]) {fa[to] = now;dfs(to, now);}else if (dep[to] <= dep[now]) {cnt[to]++;cnt[now]--;}}
}
void _dfs(int now) {for (int i = 0; i < g[now].size(); ++i) {int to = g[now][i];if (fa[to] == now) {_dfs(to);cnt[now] += cnt[to];}}
}bool __dfs(int now) {bool flg = false;for (int i = 0; i < g[now].size(); ++i) {int to = g[now][i];if (fa[to] == now) {if (__dfs(to)) {flg = true;int fu = find(now), fv = find(to);if (fu != fv) {dp[fu] += dp[fv];f[fv] = fu;}}}}return flg || cnt[now] != 0;
}void ___dfs(int now, LL sum) {ans = max(ans, sum);for (int i = 0; i < g[now].size(); ++i) {int to = g[now][i];if (fa[to] == now) {if (find(to) != s)___dfs(to, sum + w[to]);else___dfs(to, sum);}}
}
int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i) {f[i] = -1;cnt[i] = 0;vis[i] = 0;cin >> w[i];dp[i] = w[i];}for (int i = 1; i <= m; ++i) {cin >> u >> v;g[u].pb(v);g[v].pb(u);}cin >> s;dfs(s, 0);_dfs(s);__dfs(s);___dfs(s, 0);cout << dp[s] + ans << endl;
}

View Code

转载于:https://www.cnblogs.com/smallhester/p/11551473.html

codeforces 1220E相关推荐

  1. CodeForces - 1220E Tourism(边双缩点+树形dp)

    题目链接:点击查看 题目大意:给出一个由n个点和m条边构成的无向图,每个点都有一个权值,现在给出起点st,问从起点出发,如何规划路线可以使得途径的权值最大,唯一的约束是一条边不能连续经过,比如当前从u ...

  2. CodeForces 375D Tree and Queries

    传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...

  3. 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)

    题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...

  4. 【codeforces 812C】Sagheer and Nubian Market

    [题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...

  5. CodeForces 获得数据

    针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...

  6. codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...

    题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...

  7. CodeForces 595A

    题目链接: http://codeforces.com/problemset/problem/595/A 题意: 一栋楼,有n层,每层有m户,每户有2个窗户,问这栋楼还有多少户没有睡觉(只要一个窗户灯 ...

  8. codeforces A. Jeff and Digits 解题报告

    题目链接:http://codeforces.com/problemset/problem/352/A 题目意思:给定一个只有0或5组成的序列,你要重新编排这个序列(当然你可以不取尽这些数字),使得这 ...

  9. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

最新文章

  1. 5see我看视频交友客户端 v2.3.0.11官方版
  2. HTTP状态码:400\500 错误代码
  3. 计算机组成原理简单计算机设计,计算机组成原理课设.doc
  4. for循环和while循环
  5. JVM优化系列-Stop-The-World实战
  6. 统计学基础学习笔记:概率与概率分布
  7. 《天天数学》连载15:一月十五日
  8. tshark 解析pcap中带TLS协议的数据包
  9. Windows Phone 7 文件下载进度和速度显示
  10. 创业宝典:未来企业家之路(第5版)
  11. Python(十六):标准库
  12. 计算机桌面图标有小锁如何去掉,去掉电脑桌面图标小黄锁的两种方法
  13. JAVA计算机毕业设计员工健康检测系统Mybatis+源码+数据库+lw文档+系统+调试部署
  14. TVS相关参数与选型
  15. Zookeeper客户端网络通讯模型分析
  16. Codeforces 32A A. Reconnaissance (暴力)
  17. dnf服务器炸团门票怎么找回,DNF最新BUG,玩家打团买票后材料消失,无法引炸直接退队!...
  18. MFC ClientToScreen 和 ScreenToClient
  19. 华为云认证有什么?考试难不难?
  20. ipad做扩展屏方法

热门文章

  1. ES6学习(八)—Promise对象 超鸡重要
  2. php7.2 session,PHP 7.2 Warning: “Cannot change session name when session is active”
  3. 贷款买车后,有多少人后悔了?
  4. 古巷里的人像写真,怎么拍出漂亮的照片?
  5. 之前8年都在上班工资16000,厌倦了天天上班的日子,就裸辞了。现在很迷茫,下一步怎么办?
  6. 矜情作态的拼音及解释
  7. 自媒体人本质是互联网公司内容运营的角色
  8. 一个人成就的高低,努力程度只是标配
  9. 未处理的超时和请求取消
  10. 苹果XR信号差,可否要求苹果公司召回?