博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1049 - One Way Roads 观察 dfs
阅读量:5313 次
发布时间:2019-06-14

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

题意是,在一副有向图中,要使得它变成一个首尾相连的图,需要的最小代价。

就是本来是1-->2  2-->3  1--->3的,变成1-->2-->3--->1的话,需要把1-->3变成3--->1,就要耗费这条边的代价

思路就是找出一个入度为2的点,要么往上走,要么往下走,dfs两次。

或者记录一个总和,dfs一次就好,上一次没耗费的,正是向下走要耗费的

#include 
#include
#include
#include
#include
#include
#define IOS ios::sync_with_stdio(false)using namespace std;#define inf (0x3f3f3f3f)typedef long long int LL;#include
#include
#include
#include
#include
#include
#include
#include
const int maxn = 100 + 20;struct node { int u, v, w, tonext; bool flag;} e[maxn * 2];int first[maxn];int num;int in[maxn];int DFN;void add(int u, int v, int w, bool flag) { ++num; e[num].u = u; e[num].v = v; e[num].w = w; e[num].tonext = first[u]; first[u] = num; e[num].flag = flag;}int now;int dfs(int cur, int root, int fa) { if (cur == root && now == 0) return 0; if (cur == root) { for (int i = first[cur]; i; i = e[i].tonext) { now--; if (now == 0) { return e[i].w + dfs(e[i].v, root, cur); } } } else { for (int i = first[cur]; i; i = e[i].tonext) { int v = e[i].v; if (v == fa) continue; if (e[i].flag) { return dfs(v, root, cur); } else { return e[i].w + dfs(v, root, cur); } } }}void work() { num = 0; ++DFN; int n; scanf("%d", &n); int root = -inf; for (int i = 1; i <= n; ++i) { int u, v, w; scanf("%d%d%d", &u, &v, &w); if (in[v] == DFN) { root = v; } in[v] = DFN; add(u, v, w, true); add(v, u, w, false); } int ans = inf; if (root == -inf) { ans = 0; } else { now = 1; ans = dfs(root, root, 0); now = 2; ans = min(ans, dfs(root, root, 0)); } static int f = 0; printf("Case %d: %d\n", ++f, ans);}int main() {#ifdef local freopen("data.txt", "r", stdin);// freopen("data.txt", "w", stdout);#endif int t; scanf("%d", &t); while (t--) work(); return 0;}
View Code

 

转载于:https://www.cnblogs.com/liuweimingcprogram/p/6421521.html

你可能感兴趣的文章
POJ2524 并查集
查看>>
boost asio resolver
查看>>
<转>.h和.cpp文件的区别
查看>>
[转]svn常用命令
查看>>
Swing学习1——总体概述
查看>>
nginx 注释配置及详解
查看>>
QCustomplot(一) 能做什么事
查看>>
vue1.0和vue2.0生命周期----整理一
查看>>
Could not load the Tomcat server configuration at \Servers\Tomcat v7.0 Server at localhost-config
查看>>
对象的成员的初始化
查看>>
zbb20180710 maven Failed to read artifact descriptor--maven
查看>>
关于Webapp的注意事项
查看>>
使用JDBC进行数据库的事务操作(2)
查看>>
HDU 3966 Aragorn's Story (树链剖分+线段树)
查看>>
MIME协议(三) -- MIME邮件的组织结构
查看>>
javascript:设置URL参数的方法,适合多条件查询
查看>>
javascript获取URL查询字符串
查看>>
大型网站架构演化(二)——应用服务和数据服务分离
查看>>
最近沉迷生意经
查看>>
BZOJ1787 [Ahoi2008]Meet 紧急集合 LCA
查看>>