Submission #32759166
Source Code Expand
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
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 |
|
|
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 |