QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#707330#2514. Cable ProtectionbecaidoAC ✓45ms25412kbC++201.9kb2024-11-03 15:32:112024-11-03 15:32:12

Judging History

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

  • [2024-11-03 15:32:12]
  • 评测
  • 测评结果:AC
  • 用时:45ms
  • 内存:25412kb
  • [2024-11-03 15:32:11]
  • 提交

answer

#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;

#ifdef WAIMAI
#define debug(HEHE...) cout<<"["<<#HEHE<<"] : ",dout(HEHE)
void dout(){cout<<'\n';}
template<typename T,typename...U>
void dout(T t,U...u){cout<<t<<(sizeof...(u)?", ":""),dout(u...);}
#else
#define debug(...) 7122
#endif

#define int long long
#define ll long long
#define Waimai ios::sync_with_stdio(false),cin.tie(0)
#define FOR(x,a,b) for(int x=a,I=b;x<=I;x++)
#define pb emplace_back
#define F first
#define S second

const int INF = 1e9;
const int SIZE = 2e5 + 5;

int n, m;
vector<int> adj[SIZE], cadj[SIZE];
int a[SIZE], dp[SIZE][2], cdp[SIZE][2];
bool vs[SIZE];

void dfs (int pos, int fa) {
    dp[pos][1] = 1;
    for (int np : adj[pos]) if (np != fa) {
        dfs (np, pos);
        dp[pos][0] += dp[np][1];
        dp[pos][1] += min (dp[np][0], dp[np][1]);
    }
}

void solve() {
    cin >> n >> m;
    FOR (i, 1, n + m) {
        int a, b;
        cin >> a >> b;
        a++, b++;
        if (max (a, b) > n) {
            adj[a].pb (b);
            adj[b].pb (a);
        } else {
            cadj[a].pb (b);
            cadj[b].pb (a);
        }
    }
    FOR (i, 1, n) dfs (i, i);
    for (int i = 1, pos = 1; i <= n; i++) {
        a[i] = pos;
        vs[pos] = 1;
        for (int np : cadj[pos]) if (!vs[np]) {
            pos = np;
            break;
        }
    }

    int ans = INF;
    auto work = [&]() {
        cdp[1][0] = INF, cdp[1][1] = dp[a[1]][1];
        FOR (i, 2, n) {
            cdp[i][0] = dp[a[i]][0], cdp[i][1] = dp[a[i]][1];
            cdp[i][0] += cdp[i - 1][1];
            cdp[i][1] += min (cdp[i - 1][0], cdp[i - 1][1]);
        }
        return min (cdp[n][0], cdp[n][1]);
    };
    ans = min (ans, work());
    reverse (a + 1, a + n + 1);
    ans = min (ans, work());
    cout << ans << '\n';
}

int32_t main() {
    Waimai;
	solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 7848kb

input:

3 2
0 1
1 2
0 2
1 3
2 4

output:

2

result:

ok single line: '2'

Test #2:

score: 0
Accepted
time: 1ms
memory: 5816kb

input:

5 5
0 1
1 2
2 3
3 4
0 4
0 5
1 6
2 7
3 8
4 9

output:

5

result:

ok single line: '5'

Test #3:

score: 0
Accepted
time: 2ms
memory: 7812kb

input:

700 300
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52...

output:

446

result:

ok single line: '446'

Test #4:

score: 0
Accepted
time: 3ms
memory: 8580kb

input:

4000 6000
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 ...

output:

4129

result:

ok single line: '4129'

Test #5:

score: 0
Accepted
time: 20ms
memory: 13956kb

input:

100 99900
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 ...

output:

40317

result:

ok single line: '40317'

Test #6:

score: 0
Accepted
time: 2ms
memory: 7856kb

input:

4 11
0 1
0 3
0 4
0 6
1 2
1 9
2 10
2 3
4 5
6 7
7 8
10 11
10 13
11 12
13 14

output:

7

result:

ok single line: '7'

Test #7:

score: 0
Accepted
time: 2ms
memory: 7688kb

input:

4 11
0 1
0 3
0 4
0 5
1 2
1 6
2 3
2 9
3 12
6 7
6 8
9 10
10 11
12 13
12 14

output:

5

result:

ok single line: '5'

Test #8:

score: 0
Accepted
time: 0ms
memory: 7792kb

input:

4 11
0 1
0 3
0 4
0 6
1 2
1 9
2 10
2 3
4 5
6 7
7 8
10 11
10 13
11 12
13 14

output:

7

result:

ok single line: '7'

Test #9:

score: 0
Accepted
time: 1ms
memory: 7808kb

input:

4 11
0 1
0 3
0 4
0 5
1 2
1 6
2 3
2 9
3 12
6 7
6 8
9 10
10 11
12 13
12 14

output:

5

result:

ok single line: '5'

Test #10:

score: 0
Accepted
time: 45ms
memory: 25412kb

input:

100000 100000
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51...

output:

84571

result:

ok single line: '84571'

Test #11:

score: 0
Accepted
time: 2ms
memory: 7768kb

input:

125 375
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
51 52...

output:

205

result:

ok single line: '205'

Test #12:

score: 0
Accepted
time: 0ms
memory: 7724kb

input:

3 2
0 1
1 2
0 2
1 3
2 4

output:

2

result:

ok single line: '2'

Test #13:

score: 0
Accepted
time: 2ms
memory: 7848kb

input:

4 1
0 1
1 2
2 3
0 3
1 4

output:

2

result:

ok single line: '2'

Test #14:

score: 0
Accepted
time: 14ms
memory: 14532kb

input:

30001 30000
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 16
16 17
17 18
18 19
19 20
20 21
21 22
22 23
23 24
24 25
25 26
26 27
27 28
28 29
29 30
30 31
31 32
32 33
33 34
34 35
35 36
36 37
37 38
38 39
39 40
40 41
41 42
42 43
43 44
44 45
45 46
46 47
47 48
48 49
49 50
50 51
5...

output:

25437

result:

ok single line: '25437'

Test #15:

score: 0
Accepted
time: 0ms
memory: 7828kb

input:

6 1
0 1
1 2
2 3
3 4
4 5
0 5
0 6

output:

3

result:

ok single line: '3'

Test #16:

score: 0
Accepted
time: 2ms
memory: 7808kb

input:

7 1
0 1
1 2
2 3
3 4
4 5
5 6
0 6
0 7

output:

4

result:

ok single line: '4'