Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
43266 _Yuyuyu_ 【J】T3 C++ 解答错误 50 1000 MS 17320 KB 1321 2026-10-28 14:05:02

Tests(5/10):


#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; } /* 思路: */


测评信息: