QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#754223#9573. Social Mediayeah14RE 535ms3916kbC++172.6kb2024-11-16 14:32:082024-11-16 14:32:10

Judging History

你现在查看的是最新测评结果

  • [2024-11-16 14:32:10]
  • 评测
  • 测评结果:RE
  • 用时:535ms
  • 内存:3916kb
  • [2024-11-16 14:32:08]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ull long long
#define PII  pair<int ,int>
const int INF = 0x3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const int N = 1e5 + 5;
int fp(int a, int x, int mod) {
    int ans = 1;
    while (x) {
        if (x & 1)ans *= a;
        ans %= mod;
        a *= a;
        a %= mod;
        x >>= 1;
    }
    return ans;
}






struct ff
{
    int w, i, nxt;
    bool operator<(const ff a) {        
        if (w != a.w)return w < a.w;
        else return nxt < a.nxt;
    }

};
priority_queue<ff>q;
bool fr[N];
int cnt[N];
int cntt[N];
map<PII,int>po;
int id[N];
vector<int>no_f;
bool cmp(int a, int b) {
    if (cnt[a] != cnt[b])return cnt[a] > cnt[b];
    else return fr[a] < fr[b];

}
void solve() {
    int n, m, k;
    cin >> n >> m >> k;
    int now=0;
    for (int i = 1; i <= k+5; i++) {
        id[i] = i;
        cnt[i] = 0;
        cntt[i] = 0;
        fr[i] = 0;
    }
    po.clear();
    no_f.clear();
    for (int i = 1; i <= n; i++) {
        int a;
        cin >> a;
        fr[a] = 1;
    }
    for (int i = 1; i <= k; i++) {
        if (!fr[i])no_f.push_back(i);
    }
    for (int i = 1; i <= m; i++) {
        int a, b;
        cin >> a >> b;
        po[{ a,b }]++;
        po[{ b,a }]++;
        if (fr[a] && fr[b])now++;
        else if (fr[a]) {
            cnt[b]++;
            cntt[b]++;
        }
        else if (fr[b]) {
            cnt[b]++;
            cntt[a]++;
        }
        else if (a == b) {
            cnt[a]++;
            cntt[a]++;
        }
        else {
            cnt[a]++;
            cnt[b]++;
        }
    }
    sort(no_f.begin(), no_f.end(), cmp);
    int pp = k - n;
    if (pp == 0||now==m) {
        cout << now << endl;
        return;
    }
    int ans = 0;
    if (pp == 1) {
        cout << now + cntt[no_f[0]] << endl;
        return;
    }
    for (int i = 0; i < no_f.size(); i++) {
        int it = no_f[i];
        for (int j = i+1; j < no_f.size(); j++) {
            int jt = no_f[j];
            int res = cntt[it] + cntt[jt];
            if (po.count({ it,jt }))res += po[{it, jt}];
            ans = max(res, ans);
        }
    }
    cout << ans + now << endl;
}

signed main() {
   ios::sync_with_stdio(0);
   cin.tie(0), cout.tie(0);
    int t = 1;
    cin >> t;
    while (t--) {
        solve();
    }
}
/*
 5
 4 12 7
 5 7 3 6
 3 6
 2 2
 1 4
 2 4
 1 3
 7 6
 4 1
 5 4
 1 1
 1 1
 2 1
 3 7
 2 7 6
 2 4
 1 2
 3 2
 2 5
 5 4
 2 6
 4 6
 2 6
 1 1 2
 1
 1 2
 2 1 2
 1 2
 1 2
 2 1 100
 24 11
 11 24
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3676kb

input:

5
4 12 7
5 7 3 6
3 6
2 2
1 4
2 4
1 3
7 6
4 1
5 4
1 1
1 1
2 1
3 7
2 7 6
2 4
1 2
3 2
2 5
5 4
2 6
4 6
2 6
1 1 2
1
1 2
2 1 2
1 2
1 2
2 1 100
24 11
11 24

output:

9
5
1
1
1

result:

ok 5 number(s): "9 5 1 1 1"

Test #2:

score: 0
Accepted
time: 42ms
memory: 3616kb

input:

10000
19 12 20
8 12 1 5 11 7 17 13 19 6 3 9 10 15 14 20 4 18 16
4 11
7 1
8 4
16 19
1 13
15 2
16 2
8 7
3 15
11 13
5 20
18 14
17 14 20
2 9 1 12 8 11 10 17 18 16 3 15 5 14 20 13 7
15 10
3 2
5 16
7 8
6 1
6 4
18 16
1 8
4 1
20 6
6 9
4 15
7 5
14 9
1 3 18
9
15 18
17 15
11 14
7 19 7
3 1 2 5 6 4 7
5 1
4 5
3 1...

output:

12
14
1
19
6
5
1
11
19
4
3
10
4
1
4
19
15
2
18
4
17
5
1
2
5
17
3
2
6
15
6
3
6
4
4
7
3
7
4
1
16
15
2
3
6
12
12
7
6
8
8
6
8
11
16
1
4
9
8
14
2
6
19
19
16
8
20
14
8
12
7
9
6
8
2
17
9
5
5
3
6
6
20
8
13
11
10
5
3
6
3
1
8
5
8
11
7
14
10
9
9
11
7
9
5
2
8
14
10
5
3
5
5
10
1
6
9
16
5
3
19
1
4
8
8
10
4
2
1
15...

result:

ok 10000 numbers

Test #3:

score: 0
Accepted
time: 88ms
memory: 3764kb

input:

1000
59 96 80
10 66 50 63 15 2 28 41 21 58 45 42 14 79 32 33 37 52 1 74 57 27 72 77 8 49 40 78 31 12 70 62 73 26 69 24 3 65 67 23 6 47 17 38 54 80 5 64 13 51 44 71 39 34 75 19 55 30 68
61 14
14 26
7 28
53 3
51 79
68 24
50 1
39 45
74 18
13 12
5 68
41 1
32 30
69 13
61 59
26 68
17 56
74 14
22 25
71 41
...

output:

60
83
4
5
2
90
23
125
72
7
49
81
25
9
40
22
78
51
7
47
77
19
49
73
134
114
104
121
180
3
2
4
92
86
146
9
20
2
74
3
78
32
19
63
5
79
17
16
54
131
83
23
45
153
33
137
67
98
8
21
6
53
12
89
14
97
9
142
25
100
108
87
56
15
43
153
2
165
41
132
116
160
118
167
63
6
16
8
3
67
4
91
4
34
8
83
32
34
119
63
17...

result:

ok 1000 numbers

Test #4:

score: 0
Accepted
time: 535ms
memory: 3916kb

input:

100
37 237 517
339 497 190 114 508 454 321 58 102 392 289 207 291 459 16 320 55 378 269 63 407 244 397 101 357 328 412 62 70 468 457 21 253 453 509 169 400
202 476
217 222
418 58
440 109
90 110
266 197
159 398
412 317
259 239
500 34
178 508
329 162
192 409
467 144
223 300
2 289
96 366
191 427
142 12...

output:

6
4
11
6
6
7
11
11
2
3
14
2
4
2
3
2
2
5
7
3
3
5
3
13
8
7
17
6
2
8
3
9
3
10
2
3
3
2
2
2
5
12
2
5
5
959
369
56
1045
15
67
394
757
82
1008
56
2
1317
1590
217
37
345
32
515
103
326
1628
1450
293
12
397
358
403
420
220
150
392
588
3
978
1296
97
49
1377
7
1764
627
1652
188
65
11
12
2
2
1
5
1
2
2
2

result:

ok 100 numbers

Test #5:

score: -100
Runtime Error

input:

1
100 200000 200000
9411 13081 102149 19907 193611 24114 159730 105867 96529 35050 21890 102981 87777 182418 96659 118374 76106 107614 179526 45826 56158 33510 42240 53971 75573 98727 113513 35449 165290 167552 180720 151348 194140 132021 197828 138348 52399 151728 27676 75498 122825 15163 89905 262...

output:


result: