UESTC889&&uvalive6623 Battle for Silver(dfs)
来源:互联网 发布:json.parse 源码 编辑:程序博客网 时间:2024/05/18 01:00
题意:要选取一个集合,每两个点都有直接连接,且连线不交叉,求集合的最大权值。
关键在于选取的集合每两个点之间直连,且连线不交叉,可证明最多四个点,裸搜索
代码:
#include<iostream>#include<cmath>#include<queue>#include<set>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define MOD 100000007#define INF 0x3f3f3f3fusing namespace std;const int maxn=500;const int maxm=1000;int n,ans,da[maxn],done[maxn],p[maxn];bool g[maxn][maxn];bool is_ill(int place,int x){ for(int i=0;i<place;i++) if(!g[p[i]][x])return 1; return 0;}void dfs(int place,int last,int sum){ ans=max(ans,sum); if(place==4)return ; for(int i=last+1;i<=n;i++) if(!done[i]&&!is_ill(place,i)){ done[i]=1; p[place]=i; dfs(place+1,i,sum+da[i]); done[i]=0; }}int main(){ int m,a,b,i,j,k; while(~scanf("%d%d",&n,&m)) { for(i=1;i<=n;i++) scanf("%d",&da[i]); memset(g,0,sizeof g); for(i=0;i<m;i++) { scanf("%d%d",&a,&b); g[a][b]=g[b][a]=1; } ans=0; dfs(0,0,0); printf("%d\n",ans); } return 0;}
0 0
- UESTC889&&uvalive6623 Battle for Silver(dfs)
- UESTC 889 Battle for Silver (dfs)
- nwerc2013 B - Battle for Silver
- UVAlive 6623 Battle for Silver(暴力+思路)
- poj1856Sea Battle(DFS)
- POJ 1856 Sea Battle(dfs)
- pat甲1013. Battle Over Cities(dfs)
- 1013. Battle Over Cities (25)(并查集/dfs)
- POJ 1856 Sea Battle(DFS)
- POJ 1856 Sea Battle(DFS)
- BNU-51645-ACM Battle-DFS
- ural 1933 Guns for Battle!
- URAL 1933 Guns for Battle!
- URAL 1933 Guns for Battle!
- Ural1540 Battle for the Ring
- (intermediate)DFS (强连通+缩点+拓扑排序) UVA 11098 - Battle II
- PAT 1013. Battle Over Cities (25)(并查集||DFS)
- PAT 1013. Battle Over Cities (25)(孤岛的个数,DFS或者BFS)
- 无法定位程序输入点RegSetKeyValueA 于动态链接库 ADVAPI32.dll上 解决方案
- 用 SQL 语句还原数据库(with move 选项用法)
- 软件知识分类法
- jsp概述
- Core Graphics 学习笔记 之 Image Drawing(二)
- UESTC889&&uvalive6623 Battle for Silver(dfs)
- Linux下无需输入密码自动登陆ssh服务器方法
- 中文截取无乱码
- javascript 学习笔记(0)
- 单例模式
- 2014 年 Android 碎片化报告
- UIControlEventTouch的使用
- ThinkPHP中语言设置
- rapidxml读取包含中文路径的xml解析错误的解决方法