Submission #3879114
Source Code Expand
#include <stdio.h>
#include <algorithm>
#include <assert.h>
#include <bitset>
#include <cmath>
#include <complex>
#include <deque>
#include <functional>
#include <iostream>
#include <limits.h>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <time.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#pragma warning(disable:4996)
#pragma comment(linker, "/STACK:336777216")
using namespace std;
#define mp make_pair
#define Fi first
#define Se second
#define pb(x) push_back(x)
#define szz(x) ((int)(x).size())
#define rep(i, n) for(int i=0;i<n;i++)
#define all(x) (x).begin(), (x).end()
#define ldb ldouble
typedef unsigned int uint;
typedef tuple<int, int, int> t3;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair <ll, int> pli;
typedef pair <db, db> pdd;
int IT_MAX = 1 << 19;
const ll MOD = 1000000007;
const int INF = 0x3f3f3f3f;
const ll LL_INF = 0x3f3f3f3f3f3f3f3f;
const db PI = acos(-1);
const db ERR = 1e-10;
const int MX = 200005;
struct UF{
int t[MX];
ll ans[MX], tB[MX];
int find(int x){ return t[x] ? t[x] = find(t[x]) : x; }
int merge(int a, int b){ // a <- b
a = find(a), b = find(b);
if(a == b) return false;
t[b] = a; tB[a] += tB[b]; return true;
}
}uf;
int N, M;
pii D[MX];
vector<int> G[MX];
int P[MX], chk[MX];
int main()
{
scanf("%d%d", &N, &M);
for(int i = 1; i <= N; i++) scanf("%d%d", &D[i].first, &D[i].second);
for(int i = 1; i <= M; i++){
int a, b;
scanf("%d%d", &a, &b);
G[a].push_back(b);
G[b].push_back(a);
}
for(int i = 1; i <= N; i++) P[i] = i;
sort(P+1, P+N+1, [](int l, int r){
return D[l].first - D[l].second < D[r].first - D[r].second;
});
for(int i = 1; i <= N; i++) uf.tB[i] = D[i].second;
for(int i = 1; i <= N; i++){
int cur = P[i], A = D[cur].first, B = D[cur].second;
ll ans = max(A-B, 0);
for(int c : G[cur]){
if(!chk[c]) continue;
int u = uf.find(c);
ans = min(ans, max(uf.ans[u], A - (B+uf.tB[u])));
}
uf.ans[cur] = ans;
for(int c : G[cur]) if(chk[c]) uf.merge(cur, c);
chk[cur] = 1;
}
int p = uf.find(1);
printf("%lld\n", uf.ans[p] + uf.tB[p]);
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Donation |
| User | zigui |
| Language | C++14 (GCC 5.4.1) |
| Score | 1000 |
| Code Size | 2439 Byte |
| Status | AC |
| Exec Time | 80 ms |
| Memory | 13692 KiB |
Compile Error
./Main.cpp: In function ‘int main()’:
./Main.cpp:74:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &N, &M);
^
./Main.cpp:75:70: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for(int i = 1; i <= N; i++) scanf("%d%d", &D[i].first, &D[i].second);
^
./Main.cpp:78:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &a, &b);
^
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 1000 / 1000 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_47.txt, subtask_1_48.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 4 ms | 8960 KiB |
| sample_02.txt | AC | 4 ms | 8960 KiB |
| sample_03.txt | AC | 4 ms | 8960 KiB |
| subtask_1_01.txt | AC | 4 ms | 8960 KiB |
| subtask_1_02.txt | AC | 6 ms | 9088 KiB |
| subtask_1_03.txt | AC | 21 ms | 9984 KiB |
| subtask_1_04.txt | AC | 4 ms | 8960 KiB |
| subtask_1_05.txt | AC | 4 ms | 8960 KiB |
| subtask_1_06.txt | AC | 4 ms | 8960 KiB |
| subtask_1_07.txt | AC | 4 ms | 8960 KiB |
| subtask_1_08.txt | AC | 4 ms | 8960 KiB |
| subtask_1_09.txt | AC | 4 ms | 8960 KiB |
| subtask_1_10.txt | AC | 4 ms | 8960 KiB |
| subtask_1_11.txt | AC | 4 ms | 8960 KiB |
| subtask_1_12.txt | AC | 4 ms | 8960 KiB |
| subtask_1_13.txt | AC | 18 ms | 9856 KiB |
| subtask_1_14.txt | AC | 7 ms | 9112 KiB |
| subtask_1_15.txt | AC | 20 ms | 9728 KiB |
| subtask_1_16.txt | AC | 60 ms | 12800 KiB |
| subtask_1_17.txt | AC | 26 ms | 10112 KiB |
| subtask_1_18.txt | AC | 64 ms | 13056 KiB |
| subtask_1_19.txt | AC | 25 ms | 9984 KiB |
| subtask_1_20.txt | AC | 66 ms | 12928 KiB |
| subtask_1_21.txt | AC | 67 ms | 13180 KiB |
| subtask_1_22.txt | AC | 28 ms | 10880 KiB |
| subtask_1_23.txt | AC | 27 ms | 10880 KiB |
| subtask_1_24.txt | AC | 20 ms | 10240 KiB |
| subtask_1_25.txt | AC | 15 ms | 9728 KiB |
| subtask_1_26.txt | AC | 52 ms | 12672 KiB |
| subtask_1_27.txt | AC | 46 ms | 12032 KiB |
| subtask_1_28.txt | AC | 6 ms | 9088 KiB |
| subtask_1_29.txt | AC | 50 ms | 11648 KiB |
| subtask_1_30.txt | AC | 70 ms | 12928 KiB |
| subtask_1_31.txt | AC | 13 ms | 9472 KiB |
| subtask_1_32.txt | AC | 74 ms | 13568 KiB |
| subtask_1_33.txt | AC | 66 ms | 13568 KiB |
| subtask_1_34.txt | AC | 72 ms | 13568 KiB |
| subtask_1_35.txt | AC | 71 ms | 13568 KiB |
| subtask_1_36.txt | AC | 79 ms | 13568 KiB |
| subtask_1_37.txt | AC | 65 ms | 13568 KiB |
| subtask_1_38.txt | AC | 74 ms | 13692 KiB |
| subtask_1_39.txt | AC | 64 ms | 13692 KiB |
| subtask_1_40.txt | AC | 66 ms | 13692 KiB |
| subtask_1_41.txt | AC | 66 ms | 13692 KiB |
| subtask_1_42.txt | AC | 80 ms | 13568 KiB |
| subtask_1_43.txt | AC | 70 ms | 13568 KiB |
| subtask_1_44.txt | AC | 67 ms | 13568 KiB |
| subtask_1_45.txt | AC | 67 ms | 13568 KiB |
| subtask_1_46.txt | AC | 74 ms | 13568 KiB |
| subtask_1_47.txt | AC | 74 ms | 13568 KiB |
| subtask_1_48.txt | AC | 74 ms | 13568 KiB |