| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 43288 | 范墨涵 | 【J】T3 | C++ | 通过 | 100 | 666 MS | 47200 KB | 1092 | 2026-10-28 14:37:53 |
#include<bits/stdc++.h> using namespace std; #define int long long const int N = 2e5+10; int n,m; vector <int> v[N]; int a[N],s[N],t[N]; bool vis[N]; bool check(int mid){ memset (vis,false,sizeof(vis)); queue <int> q; for (int i=1;i<=n;i++){ t[i]=s[i]; if (s[i]<=mid){ q.push(i); vis[i]=true; } } while (!q.empty()){ int u=q.front(); q.pop(); for (int i:v[u]){ t[i]-=a[u]; if (t[i]<=mid and vis[i]==false){ q.push(i); vis[i]=true; } } } for (int i=1;i<=n;i++){ if (vis[i]==false) return false; } return true; } 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 x,y; cin >> x >> y; v[x].push_back(y); v[y].push_back(x); } for (int i=1;i<=n;i++){ for (int j:v[i]){ s[i]+=a[j]; } } // for (int i=1;i<=n;i++) cout << s[i] << " "; int l=1,r=1e18; while (l<r){ int mid=(l+r)>>1; if (check(mid)==true) r=mid; else l=mid+1; } cout << l; return 0; }