Submission #32759166


Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define MOD 1000000007
#define rep(i,a,n) for (ll i=a;i<(ll)n;i++)
#define per(i,a,n) for (ll i=n;i-->(ll)a;)
#define pb push_back
ll read(){ll r;scanf("%lld",&r);return r;} // read
#define N 100
#define INF 0x3f3f3f3f
int n,m;
int a[N+10];
int b[N+10];
vector<int> p2[110]; //
int S = 0;
int T = 1;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define MOD 1000000007
#define rep(i,a,n) for (ll i=a;i<(ll)n;i++)
#define per(i,a,n) for (ll i=n;i-->(ll)a;)
#define pb push_back

ll read(){ll r;scanf("%lld",&r);return r;} // read

#define N 100
#define INF 0x3f3f3f3f
int n,m;
int a[N+10];
int b[N+10];
vector<int> p2[110]; // 双向关系

int S = 0;
int T = 1;

// S,T,[2..101],[102...201][202..301][302..401]
//
int nodex(int x) {
  assert(x >=0 && x< 100);
  return 2+x;
}

int nodey(int y,int value) {
  assert(y >=0 && y< 100);
  assert(value >=1 && value <= 100);
  return 101 + y*100 + value;
}

class MinCut{
  int sz ;
  // TODO 优化成正反边下标
  vector<unordered_map<int,ll> > G; // {idx,weight}
  vector<int> d; // bfs 距离

public:
  MinCut(int n):sz(n){
    G = vector<unordered_map<int,ll> >(sz);
  }

  void path(int u,int v,ll w){
    G[u][v] += w;
  }

  int dfs(int u,int en, ll s){
    if (u == en)return s;
    for(auto [v,w]:G[u]){
      if(w == 0) continue;
      if(d[v] != d[u]+1) continue;
      int r = dfs(v,en,min(s,w));
      if(r){
        G[u][v] -= r;
        G[v][u] += r;
        return r;
      }
    }
    d[u] = 0; // 标记无效 替代vis
    return 0;
  }

  bool bfs(int st,int en){
    d = vector<int>(sz+10,-1);
    vector<int> q = {st};
    d[st] = 0;
    rep(i,0,q.size()){
      int u = q[i];
      for(auto [v,w]: G[u]){ // u -> v, weight =w
        if(d[v] != -1) continue;
        if(w == 0) continue;
        d[v] = d[u] +1;
        q.pb(v);
      }
    }
    return d[en] >= 0;
  }
  // 一次性计算
  ll calc(int st,int en){
    int ans = 0;
    while (bfs(st, en)) ans += dfs(st, en, INF);
    return ans;
  }
};

int main(){
  n = read();
  S = 0;
  T = 1;

  rep(i,0,n){
    a[i] = read();
    b[i] = read();
  }
  m = read();
  int ans = 0;
  // 预处理 和 建边
  rep(i,0,m){
    int x = read() - 1;
    int y = read() - 1;
    int minv = min(b[x],b[y]);
    ans += max(0,minv - a[x]);
    a[x] = max(a[x],minv);
    ans += max(0,minv - a[y]);
    a[y] = max(a[y],minv);

    p2[x].pb(y);
    p2[y].pb(x);
  }
  MinCut mc(20000);
  rep(i,0,n) {
    if(a[i] < b[i]){ // i in X
      mc.path(S,nodex(i),b[i] - a[i]);
      for(auto u:p2[i]){ // u in Y
        if(a[u] >= b[i]) continue;
        mc.path(nodex(i),nodey(u,b[i]-a[u]),INF);
      }
    }else{ // i in Y
      rep(j,1,101){
        mc.path(nodey(i,j),T,1);
        if(j > 1){
          mc.path(nodey(i,j),nodey(i,j-1),INF);
        }
      }
    }
  }
  printf("%lld\n",ans + mc.calc(S,T) );
  return 0;
}

Submission Info

Submission Time
Task E - Pairing Wizards
User cromarmot
Language C++ (GCC 9.2.1)
Score 900
Code Size 2564 Byte
Status AC
Exec Time 402 ms
Memory 5700 KB

Compile Error

./Main.cpp: In function ‘ll read()’:
./Main.cpp:10:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   10 | ll read(){ll r;scanf("%lld",&r);return r;} // read
      |                ~~~~~^~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 900 / 900
Status
AC × 3
AC × 65
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_max_00.txt, 01_max_01.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 02_rnd_05.txt, 02_rnd_06.txt, 02_rnd_07.txt, 02_rnd_08.txt, 02_rnd_09.txt, 03_split_00.txt, 03_split_01.txt, 03_split_02.txt, 03_split_03.txt, 03_split_04.txt, 03_split_05.txt, 03_split_06.txt, 03_split_07.txt, 03_split_08.txt, 03_split_09.txt, 04_split2_00.txt, 04_split2_01.txt, 04_split2_02.txt, 04_split2_03.txt, 04_split2_04.txt, 04_split2_05.txt, 04_split2_06.txt, 04_split2_07.txt, 04_split2_08.txt, 04_split2_09.txt, 05_maximal_01.txt, 05_maximal_02.txt, 05_maximal_03.txt, 05_maximal_04.txt, 05_maximal_05.txt, 05_maximal_06.txt, 05_maximal_07.txt, 05_maximal_08.txt, 05_maximal_09.txt, 05_maximal_10.txt, 05_maximal_11.txt, 05_maximal_12.txt, 05_maximal_13.txt, 05_maximal_14.txt, 05_maximal_15.txt, 05_maximal_16.txt, 05_maximal_17.txt, 05_maximal_18.txt, 05_maximal_19.txt, 05_maximal_20.txt, 05_maximal_21.txt, 05_maximal_22.txt, 05_maximal_23.txt, 05_maximal_24.txt, 05_maximal_25.txt, 05_maximal_26.txt, 05_maximal_27.txt, 05_maximal_28.txt, 05_maximal_29.txt, 05_maximal_30.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 9 ms 4404 KB
00_sample_01.txt AC 5 ms 4400 KB
00_sample_02.txt AC 3 ms 4688 KB
01_max_00.txt AC 12 ms 5348 KB
01_max_01.txt AC 8 ms 5148 KB
02_rnd_00.txt AC 14 ms 5700 KB
02_rnd_01.txt AC 10 ms 5668 KB
02_rnd_02.txt AC 8 ms 5568 KB
02_rnd_03.txt AC 8 ms 5600 KB
02_rnd_04.txt AC 8 ms 5696 KB
02_rnd_05.txt AC 8 ms 5596 KB
02_rnd_06.txt AC 8 ms 5640 KB
02_rnd_07.txt AC 11 ms 5244 KB
02_rnd_08.txt AC 10 ms 5668 KB
02_rnd_09.txt AC 10 ms 5664 KB
03_split_00.txt AC 203 ms 5556 KB
03_split_01.txt AC 57 ms 4916 KB
03_split_02.txt AC 127 ms 5564 KB
03_split_03.txt AC 112 ms 5700 KB
03_split_04.txt AC 334 ms 5680 KB
03_split_05.txt AC 249 ms 5536 KB
03_split_06.txt AC 162 ms 5604 KB
03_split_07.txt AC 402 ms 5416 KB
03_split_08.txt AC 153 ms 5188 KB
03_split_09.txt AC 359 ms 5512 KB
04_split2_00.txt AC 97 ms 5120 KB
04_split2_01.txt AC 44 ms 4932 KB
04_split2_02.txt AC 11 ms 4752 KB
04_split2_03.txt AC 114 ms 5092 KB
04_split2_04.txt AC 40 ms 4996 KB
04_split2_05.txt AC 96 ms 5032 KB
04_split2_06.txt AC 16 ms 4740 KB
04_split2_07.txt AC 62 ms 5020 KB
04_split2_08.txt AC 6 ms 4724 KB
04_split2_09.txt AC 8 ms 4720 KB
05_maximal_01.txt AC 12 ms 4804 KB
05_maximal_02.txt AC 11 ms 4768 KB
05_maximal_03.txt AC 16 ms 4776 KB
05_maximal_04.txt AC 12 ms 4744 KB
05_maximal_05.txt AC 11 ms 4732 KB
05_maximal_06.txt AC 16 ms 4712 KB
05_maximal_07.txt AC 13 ms 4752 KB
05_maximal_08.txt AC 13 ms 4752 KB
05_maximal_09.txt AC 12 ms 4744 KB
05_maximal_10.txt AC 17 ms 4700 KB
05_maximal_11.txt AC 13 ms 4744 KB
05_maximal_12.txt AC 12 ms 4732 KB
05_maximal_13.txt AC 11 ms 4772 KB
05_maximal_14.txt AC 10 ms 4736 KB
05_maximal_15.txt AC 12 ms 4808 KB
05_maximal_16.txt AC 12 ms 4808 KB
05_maximal_17.txt AC 11 ms 4804 KB
05_maximal_18.txt AC 11 ms 4688 KB
05_maximal_19.txt AC 11 ms 4668 KB
05_maximal_20.txt AC 10 ms 4708 KB
05_maximal_21.txt AC 11 ms 4700 KB
05_maximal_22.txt AC 12 ms 4812 KB
05_maximal_23.txt AC 13 ms 4748 KB
05_maximal_24.txt AC 15 ms 4748 KB
05_maximal_25.txt AC 11 ms 4808 KB
05_maximal_26.txt AC 14 ms 4728 KB
05_maximal_27.txt AC 10 ms 4868 KB
05_maximal_28.txt AC 12 ms 4808 KB
05_maximal_29.txt AC 13 ms 4744 KB
05_maximal_30.txt AC 12 ms 4740 KB


2025-04-05 (Sat)
18:36:39 +00:00