Lightoj 1049 DFS
来源:互联网 发布:发通知用知悉还是悉知 编辑:程序博客网 时间:2024/05/15 23:13
很容易推出如果是五向边,那么这些构成环,现在就是要找怎么改变一些边的方向使之在有向图的时候也构成环,显然只需要对一个方向进行搜索,找相反方向边的权值和。然后再与另一方向的进行比较(通过sum来减直接求得),即可得出答案。
AC代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int weight[101][101];bool mark[101];int sum, N;int flag = 1;int DFS( int pos, int pre ){mark[pos] = true;if( flag == 0 && pos == 1 ){return 0;}for( int i = 1; i <= N; i++ ){if( ( pos != 1 && i == 1 && i != pre && weight[pos][i] != 0 ) || ( weight[pos][i] != 0 && !mark[i] && i != pre ) ){flag = 0;return DFS( i, pos );}}for( int i = 1; i <= N; i++ ){if( ( pos != 1 && i == 1 && i != pre && weight[i][pos] != 0 ) || ( weight[i][pos] != 0 && !mark[i] && i != pre ) ){flag = 0;return weight[i][pos] + DFS( i, pos );}}}int main(){int T, Case = 1;cin >> T;while( T-- ){cin >> N;sum = 0;memset( mark, false, sizeof( mark ) );memset( weight, 0, sizeof( weight ) );for( int i = 0; i < N; i++ ){int temp1, temp2, temp3;cin >> temp1 >> temp2 >> temp3;weight[temp1][temp2] = temp3;sum += temp3;}flag = 1;int ans = DFS( 1, 0 );cout << "Case " << Case++ << ": " << min( ans, sum - ans ) << endl;}return 0;}
0 0
- Lightoj 1049 DFS
- lightoj 1049 - One Way Roads 【DFS】
- Lightoj 1094 DFS
- lightoj 1023 水dfs
- LightOJ-1071-dp,dfs
- LightOJ--1049--One Way Roads(dfs)(好题)
- LightOJ - 1012 Guilty Prince(DFS)
- LightOJ 1012 (简单dfs)
- LightOJ-1031-区间dp,dfs
- LightOJ-1033-区间dp,dfs
- LightOJ-1060-dfs,组合数学
- LightOJ-1012-Guilty Prince [DFS]
- LightOJ 1012 Guilty Prince(dfs水题)
- LightOJ - 1417 Forwarding Emails(强连通+dfs)
- Lightoj--1009--Back to Underworld(dfs)
- lightoj 1009 - Back to Underworld 【DFS】
- LightOJ 1219 Mafia(dfs—树上贪心)
- LightOJ 1337 The Crystal Maze(第一道DFS)
- 临界区
- 2013年度总结
- SMP
- Symmetric multiprocessing
- Introdution to 3D Game Programming With DirectX11 第2章 习题解答
- Lightoj 1049 DFS
- 基于SAML的单点登录介绍
- 返回到navigationcontroller的根视图然后push一个
- (C语言)链表的反转(一次遍历)
- 区域绘图、绘图路径、裁剪区域
- WebDriver基本API使用手册(基于Java和C#)
- java cmd命令行下加入多个jar包
- 近来选购笔记本的一些心得
- CF Array