| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 43267 | _Yuyuyu_ | 【J】T3 | C++ | 解答错误 | 50 | 1000 MS | 17336 KB | 1321 | 2026-10-28 14:05:34 |
#include<bits/stdc++.h> using namespace std; #define int long long int n,m; int a[200005]; vector<int>gp[200005]; int sum[200005],vis[200005],ssum[200005]; bool check(int mid){ int gs=0; for(int i=1;i<=n;i++)vis[i]=0,ssum[i]=sum[i]; for(int i=1;i<=n;i++){ if(sum[i]<=mid){ gs++; vis[i]=1; } } while(1){ if(gs==n)return true; bool flag=true; for(int i=1;i<=n;i++){ if(vis[i])continue; int tmp=0; for(auto it:gp[i]){ if(vis[it])continue; tmp+=a[it]; } if(tmp<=mid){ vis[i]=1; gs++; flag=false; } } if(flag)return false; } } signed main(){ // freopen("del.in","r",stdin); // freopen("del.out","w",stdout); cin>>n>>m; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++){ int u,v; cin>>u>>v; gp[u].push_back(v); gp[v].push_back(u); } for(int i=1;i<=n;i++)for(auto it:gp[i])sum[i]+=a[it]; int l=1,r=1e9; while(l<r){ int mid=(l+r)>>1; if(check(mid))r=mid; else l=mid+1; } cout<<l; return 0; } /* 思路: */