Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
117164 | 陈家宝 | 金矿 | C++ | 通过 | 100 | 0 MS | 292 KB | 1079 | 2023-12-22 13:49:46 |
#include<bits/stdc++.h> using namespace std; int a[1001][3]={0},b[1001]={0},g[1001][1001]; inline bool isNumber(char c) { return(c>='0'&&c<='9'); } void init() { int i,n; char c; cin>>n; for(i=1;i<=n;++i) cin>>b[i]; for(i=1;i<=n;i++){ int x; cin>>x; do{ int num=0; while(isNumber(c=getchar())) num=num*10+c-'0'; g[x][num]=1; g[num][x]=1; } while(c!='\n'); } for(i=1;i<=n;i++){ a[i][0]=b[i]; a[i][1]=i; } } void Max() { int i,j,max,l; for(i=10;i>=1;i--){ max=0; l=i; for(j=i+1;j<=10;j++) if(g[i][j]&&a[j][0]>max){ max=a[j][0]; l=j; } a[i][0]+=max; a[i][1]=l; } max=0; l=1; for(i=1;i<=10;i++){ if(a[i][0]>max){ max=a[i][0]; l=i; } } cout<<max; } int main(){ init(); Max(); return 0; }