nwerc2013 B - Battle for Silver
来源:互联网 发布:做ppt用什么软件 编辑:程序博客网 时间:2024/06/04 18:40
和上一题一样,建议去CF的GYM里交。
题意:找一个团(里面任意两点都有直接的路径连接)使得团内点的权值加起来最大。
方法:一开始想的超复杂,没敢做。后来经大神指点,图为平面图,任意两路径不相交,这样,团的点的个数最大就是4。接下来就简单了,搜吧。
#include<iostream>#include<cstdio>#include<cstring>#include<vector>using namespace std;vector<int>g[500];bool p[500][500];int a[500];int n,m;void init(){ for(int i=1;i<=n;i++)g[i].clear(); memset(p,0,sizeof(p));}int main(){ int u,v; while(scanf("%d%d",&n,&m)!=EOF) { init(); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=1;i<=m;i++) { scanf("%d%d",&u,&v); p[u][v]=p[v][u]=1; if(u>v)swap(u,v); g[u].push_back(v); } int ans=0; for(int i=1;i<=n;i++) { int size=g[i].size(); for(int j=0;j<size;j++) { ans=max(ans,a[i]+a[g[i][j]]); for(int k=j+1;k<size;k++) { if(!p[g[i][j]][g[i][k]])continue; ans=max(ans,a[i]+a[g[i][j]]+a[g[i][k]]); for(int h=k+1;h<size;h++) { if(!p[g[i][h]][g[i][k]]||!p[g[i][h]][g[i][j]])continue; ans=max(ans,a[i]+a[g[i][j]]+a[g[i][k]]+a[g[i][h]]); } } } } printf("%d\n",ans); } return 0;}
0 0
- nwerc2013 B - Battle for Silver
- UESTC889&&uvalive6623 Battle for Silver(dfs)
- UESTC 889 Battle for Silver (dfs)
- UVAlive 6623 Battle for Silver(暴力+思路)
- NWERC2013题解
- ural 1933 Guns for Battle!
- URAL 1933 Guns for Battle!
- URAL 1933 Guns for Battle!
- Ural1540 Battle for the Ring
- 2017.05.20【usaco2017_Mar Gold & Silver】B组
- GYM 100030 B.Epic Battle(博弈论)
- 个人训练赛 B Battle SimulationPicture
- nwerc2013 A - Absurdistan Roads
- Battle
- Ural 1540. Battle for the Ring
- GYM 100285 B. The battle near the swamp(水~)
- Codeforces Round #380 Div. 1 B. Sea Battle(贪心)
- USACO 2008 Dec Silver 1.Hay For Sale
- 第五章作业
- C#读取文件的物理路径
- VC,编辑框关联变量后,运行时候,出现应用程序错误
- MongoDB基本管理命令
- ios中创建可以拖动的view原理和实现详解(含代码)
- nwerc2013 B - Battle for Silver
- kbuild小节(写得好)
- 2> /dev/null的解释
- android基本知识点
- Python解析XML文件
- 静态页面需求(附带完成过程)
- 聊聊Oracle Data Recovery Advisor(DRA)(上)
- 机器学习中的数学
- bzoj2656: [Zjoi2012]数列(sequence)