1 条题解
-
0
暴力分
#include<bits/stdc++.h> using namespace std; int n,m,k;//点数、边数、转车次数 long long score[2505]; int x[10005],y[10005]; bool f(int a,int b){ for(int i=1;i<=m;i++) if(x[i]==a&&y[i]==b|| x[i]==b&&y[i]==a) return true; return false; } int main() { //输入 cin>>n>>m>>k; for(int i=2;i<=n;i++) cin>>score[i]; for(int i=1;i<=m;i++) cin>>x[i]>>y[i]; //计算最佳得分 long long ans = 0; for(int a=2;a<=n;a++) for(int b=2;b<=n;b++) for(int c=2;c<=n;c++) for(int d=2;d<=n;d++){ if(a==b||a==c||a==d||b==c||b==d||c==d) continue; if(f(1,a)&&f(a,b)&&f(b,c)&&f(c,d)&&f(d,1)) ans = max(ans,score[a]+score[b]+score[c]+score[d]); } //输出 cout<<ans<<"\n"; return 0; }
#include<bits/stdc++.h> using namespace std; int n,m,k;//点数、边数、转车次数 long long score[2505]; bool f[2505][2505];//f[i][j] i与j是否能互相到达 int main() { //freopen("holiday.in","r",stdin); //freopen("holiday.out","w",stdout); //输入 cin>>n>>m>>k; for(int i=2;i<=n;i++) cin>>score[i]; for(int i=1;i<=m;i++){ int x,y; cin>>x>>y; f[x][y] = true; f[y][x] = true; } //计算最佳得分 long long ans = 0; for(int a=2;a<=n;a++) for(int b=2;b<=n;b++) for(int c=2;c<=n;c++) for(int d=2;d<=n;d++){ if(a==b||a==c||a==d||b==c||b==d||c==d) continue; if(f[1][a]&&f[a][b]&&f[b][c]&&f[c][d]&&f[d][1]) ans = max(ans,score[a]+score[b]+score[c]+score[d]); } //输出 cout<<ans<<"\n"; return 0; }
- 1
信息
- ID
- 1146
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- 递交数
- 39
- 已通过
- 7
- 上传者