编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#47979 #1257. Accepted 100 174 ms 4340 K C++ 11 (Clang) / 3.4 K Rhodoks 2021-05-10 11:41:10
显示原始代码
#include <bits/stdc++.h>
#define DB double
#define LL long long

#define MST(a, b) memset((a), (b), sizeof(a))

#ifdef _DEBUG_
#define MRK() cout << "Mark" << endl;
#define WRT(x) cout << #x << " = " << (x) << endl;
#else
#define MRK() ;
#define WRT(x) ;
#endif

#define MAXN 1010000
#define MAXM 2010000
#define MOD 998244353  // 1000000007
#define LLINF 0x3f3f3f3f3f3f3f3f
#define EPS 1e-5

#define _ 0
using namespace std;

const int INF = 0x3f3f3f3f;

int n, m, s, t;
int maxflow = 0;

struct EDGE {
    int to, weight, next;
} edge[MAXM << 1];

int head[MAXN];
int deep[MAXN];
int cnt = 0;

inline void add(int x, int y, int w) {
    edge[cnt].to = y;
    edge[cnt].weight = w;
    edge[cnt].next = head[x];
    head[x] = cnt++;

    edge[cnt].to = x;
    edge[cnt].weight = 0;
    edge[cnt].next = head[y];
    head[y] = cnt++;
}

bool bfs() {
    int cur;
    queue<int> q;
    for (int i = 1; i <= n; i++) deep[i] = -1;
    deep[s] = 0;
    q.push(s);
    while (!q.empty()) {
        cur = q.front();
        q.pop();
        for (int i = head[cur]; ~i; i = edge[i].next)
            if (!~deep[edge[i].to] && edge[i].weight) {
                deep[edge[i].to] = deep[cur] + 1;
                q.push(edge[i].to);
            }
    }
    if (~deep[t])
        return true;
    else
        return false;
}

int dfs(int cur, int limit) {
    if (!limit || cur == t)
        return limit;

    int flow = 0;
    int f;

    for (int i = head[cur]; ~i; i = edge[i].next) {
        if (deep[edge[i].to] == deep[cur] + 1 && (f = dfs(edge[i].to, min(limit, edge[i].weight)))) {
            flow += f;
            limit -= f;
            edge[i].weight -= f;
            edge[i ^ 1].weight += f;
            if (!limit)
                break;
        }
    }
    if (!flow)
        deep[cur] = -1;
    return flow;
}

int dinic() {
    maxflow = 0;
    while (bfs()) maxflow += dfs(s, INF);
    return maxflow;
}

int chess[1010][1010];

/*  				模板开始					*/

// Union_Find_Set 并查集
// union_find_set(int set_size=MAXN)		传入变量为变长数组长度
// void init(int n) 						初始化
// void merge(int x,int y) 				合并两个集合
// bool query(int x,int y) 				查询两个元素是否在一个集合

class Union_Find_Set {
    int *pa;
    int n;

public:
    int Getpa(int x) { return pa[x] == x ? x : (pa[x] = Getpa(pa[x])); }

    int operator[](int x) { return Getpa(x); }

    Union_Find_Set(int _size = MAXN) {
        n = _size;
        pa = new int[_size + 2];
        Init(_size);
    }

    ~Union_Find_Set() { delete pa; }

    void Init(int n) {
        for (int i = 0; i <= n; i++) pa[i] = i;
    }

    void Merge(int x, int y) { pa[Getpa(x)] = Getpa(y); }

    bool Query(int x, int y) { return Getpa(x) == Getpa(y); }

    int Size() { return n; }
};
typedef Union_Find_Set UFS;

/*  				模板结束					*/
int visit[MAXN];
void input() {
    int x, y, w;
    cin >> n >> m;
    s = 2 * n + 1;
    t = 2 * n + 2;
    for (int i = 1; i <= t; i++) head[i] = -1;
    for (int i = 1; i <= n; i++) add(s, i, 1);
    for (int i = n + 1; i <= 2 * n; i++) add(i, t, 1);
    for (int i = 0; i < m; i++) {
        scanf("%d%d", &x, &y);
        chess[x][y] = 1;
        visit[y]++;
        add(x, y + n, 1);
    }
    UFS ufs(n + 1);
    ufs.Init(n + 1);
    int ans = 0;
    for (int i = 1; i <= n; i++) {
        int lst = -1;
        for (int j = 1; j <= n; j++)
            if (chess[i][j] == 1) {
                if (lst > 0)
                    ufs.Merge(lst, j);
                lst = j;
            }
    }
    for (int i = 1; i <= n; i++)
        if (visit[ufs.Getpa(i)] > 0)
            visit[ufs.Getpa(i)] = -1;
    for (int i = 1; i <= n; i++)
        if (visit[i] < 0)
            ans++;
    n = t;
    cout << m - ans << endl;
}

int main() {
#ifdef _DEBUG_
    freopen("C:/Users/DELL/Documents/Dev-C++/sample.in", "r", stdin);
#endif
    input();
    return ~~(0 ^ _ ^ 0);
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:4 ms
内存:408 KiB

输入文件(01.in

8 3
1 1
1 8
8 8

答案文件(01.out

2

用户输出

2

系统信息

Exited with return code 0
测试点 #2
Accepted
得分:100
用时:2 ms
内存:368 KiB

输入文件(02.in

8 4
1 1
1 8
8 8
8 1

答案文件(02.out

3

用户输出

3

系统信息

Exited with return code 0
测试点 #3
Accepted
得分:100
用时:2 ms
内存:376 KiB

输入文件(03.in

5 5
1 1
2 2
3 3
4 4
5 5

答案文件(03.out

0

用户输出

0

系统信息

Exited with return code 0
测试点 #4
Accepted
得分:100
用时:2 ms
内存:348 KiB

输入文件(04.in

100 1
100 100

答案文件(04.out

0

用户输出

0

系统信息

Exited with return code 0
测试点 #5
Accepted
得分:100
用时:3 ms
内存:424 KiB

输入文件(05.in

10 12
1 2
1 4
1 6
3 6
5 6
10 7
8 7
6 7
4 7
2 7
7 3
9 5

答案文件(05.out

8

用户输出

8

系统信息

Exited with return code 0
测试点 #6
Accepted
得分:100
用时:2 ms
内存:376 KiB

输入文件(006.in

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

答案文件(006.out

9

用户输出

9

系统信息

Exited with return code 0
测试点 #7
Accepted
得分:100
用时:3 ms
内存:376 KiB

输入文件(007.in

9 1
3 3

答案文件(007.out

0

用户输出

0

系统信息

Exited with return code 0
测试点 #8
Accepted
得分:100
用时:3 ms
内存:376 KiB

输入文件(008.in

9 13
7 6
9 6
2 3
8 7
9 7
6 4
2 7
8 8
9 8
1 8
4 6
7 4
1 4

答案文件(008.out

12

用户输出

12

系统信息

Exited with return code 0
测试点 #9
Accepted
得分:100
用时:3 ms
内存:412 KiB

输入文件(009.in

7 13
7 3
7 2
1 1
7 5
6 5
3 3
6 1
4 6
3 2
5 7
4 3
7 4
4 7

答案文件(009.out

12

用户输出

12

系统信息

Exited with return code 0
测试点 #10
Accepted
得分:100
用时:2 ms
内存:376 KiB

输入文件(010.in

5 18
2 5
5 4
3 4
1 5
5 3
1 2
4 3
2 4
5 1
4 5
4 2
3 5
5 5
2 3
2 1
1 1
1 3
3 1

答案文件(010.out

17

用户输出

17

系统信息

Exited with return code 0
测试点 #11
Accepted
得分:100
用时:3 ms
内存:372 KiB

输入文件(011.in

9 5
6 9
3 2
2 8
2 9
1 1

答案文件(011.out

2

用户输出

2

系统信息

Exited with return code 0
测试点 #12
Accepted
得分:100
用时:2 ms
内存:376 KiB

输入文件(012.in

7 18
6 7
4 1
2 4
1 2
4 5
7 6
3 1
1 6
1 4
6 5
6 6
3 3
3 2
5 2
5 7
2 7
5 4
5 1

答案文件(012.out

17

用户输出

17

系统信息

Exited with return code 0
测试点 #13
Accepted
得分:100
用时:3 ms
内存:356 KiB

输入文件(013.in

4 6
2 4
1 2
2 1
2 3
1 1
1 3

答案文件(013.out

5

用户输出

5

系统信息

Exited with return code 0
测试点 #14
Accepted
得分:100
用时:2 ms
内存:376 KiB

输入文件(014.in

8 17
8 3
7 8
2 2
6 3
6 2
5 2
3 2
2 3
1 8
3 8
6 8
6 5
3 4
4 4
3 7
7 1
5 4

答案文件(014.out

16

用户输出

16

系统信息

Exited with return code 0
测试点 #15
Accepted
得分:100
用时:3 ms
内存:372 KiB

输入文件(015.in

6 15
5 2
4 1
1 3
2 5
4 2
3 6
3 2
6 5
2 3
5 6
2 4
2 1
3 1
1 4
6 4

答案文件(015.out

14

用户输出

14

系统信息

Exited with return code 0
测试点 #16
Accepted
得分:100
用时:5 ms
内存:2164 KiB

输入文件(016.in

901 598
565 361
500 175
205 860
524 404
193 20
190 212
379 254
654 653
174 763
344 42
271 140
76 774
<4567 bytes omitted>

答案文件(016.out

330

用户输出

330

系统信息

Exited with return code 0
测试点 #17
Accepted
得分:100
用时:4 ms
内存:1756 KiB

输入文件(017.in

530 551
370 236
26 367
405 200
55 355
436 316
478 344
397 315
476 392
60 512
233 526
514 248
429 325
<4086 bytes omitted>

答案文件(017.out

396

用户输出

396

系统信息

Exited with return code 0
测试点 #18
Accepted
得分:100
用时:4 ms
内存:760 KiB

输入文件(018.in

904 84
121 471
711 121
862 151
441 193
514 539
479 427
342 129
583 269
260 175
607 462
641 578
282 2
<560 bytes omitted>

答案文件(018.out

2

用户输出

2

系统信息

Exited with return code 0
测试点 #19
Accepted
得分:100
用时:4 ms
内存:900 KiB

输入文件(019.in

322 197
178 243
39 189
83 306
293 89
254 60
223 82
96 176
262 302
276 15
135 248
265 232
63 281
179 
<1356 bytes omitted>

答案文件(019.out

91

用户输出

91

系统信息

Exited with return code 0
测试点 #20
Accepted
得分:100
用时:5 ms
内存:2080 KiB

输入文件(020.in

569 804
264 153
179 489
204 404
121 227
309 101
534 470
361 276
537 107
474 107
513 334
167 332
313 
<6023 bytes omitted>

答案文件(020.out

729

用户输出

729

系统信息

Exited with return code 0
测试点 #21
Accepted
得分:100
用时:4 ms
内存:1268 KiB

输入文件(021.in

254 526
54 106
142 201
49 219
238 117
136 242
171 196
132 49
59 44
195 169
103 230
222 77
154 159
14
<3680 bytes omitted>

答案文件(021.out

511

用户输出

511

系统信息

Exited with return code 0
测试点 #22
Accepted
得分:100
用时:4 ms
内存:1528 KiB

输入文件(022.in

300 844
197 204
168 265
277 270
101 251
192 36
222 79
270 212
242 139
161 124
169 220
182 249
177 25
<6051 bytes omitted>

答案文件(022.out

839

用户输出

839

系统信息

Exited with return code 0
测试点 #23
Accepted
得分:100
用时:5 ms
内存:1884 KiB

输入文件(023.in

503 668
81 343
481 83
182 390
22 300
487 210
278 503
164 337
90 1
437 244
219 20
98 97
210 262
76 42
<5008 bytes omitted>

答案文件(023.out

577

用户输出

577

系统信息

Exited with return code 0
测试点 #24
Accepted
得分:100
用时:4 ms
内存:1528 KiB

输入文件(024.in

300 848
273 182
240 132
279 174
237 281
279 180
131 34
24 238
239 8
274 237
63 24
79 233
204 105
75 
<6055 bytes omitted>

答案文件(024.out

841

用户输出

841

系统信息

Exited with return code 0
测试点 #25
Accepted
得分:100
用时:4 ms
内存:1012 KiB

输入文件(025.in

166 728
126 14
151 109
118 126
112 37
76 151
6 71
98 94
117 79
101 90
84 42
117 112
42 7
54 6
155 98
<4795 bytes omitted>

答案文件(025.out

727

用户输出

727

系统信息

Exited with return code 0
测试点 #26
Accepted
得分:100
用时:2 ms
内存:376 KiB

输入文件(026.in

1 1
1 1

答案文件(026.out

0

用户输出

0

系统信息

Exited with return code 0
测试点 #27
Accepted
得分:100
用时:3 ms
内存:376 KiB

输入文件(027.in

7 49
1 1
1 2
1 3
1 4
1 5
1 6
1 7
2 1
2 2
2 3
2 4
2 5
2 6
2 7
3 1
3 2
3 3
3 4
3 5
3 6
3 7
4 1
4 2
4 3
<101 bytes omitted>

答案文件(027.out

48

用户输出

48

系统信息

Exited with return code 0
测试点 #28
Accepted
得分:100
用时:3 ms
内存:376 KiB

输入文件(028.in

15 225
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
2 1
2 2
2 3
2 4
2 5
2 6
2 7
<987 bytes omitted>

答案文件(028.out

224

用户输出

224

系统信息

Exited with return code 0
测试点 #29
Accepted
得分:100
用时:3 ms
内存:488 KiB

输入文件(029.in

26 676
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 
<3495 bytes omitted>

答案文件(029.out

675

用户输出

675

系统信息

Exited with return code 0
测试点 #30
Accepted
得分:100
用时:3 ms
内存:528 KiB

输入文件(030.in

31 961
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 
<5115 bytes omitted>

答案文件(030.out

960

用户输出

960

系统信息

Exited with return code 0
测试点 #31
Accepted
得分:100
用时:6 ms
内存:2944 KiB

输入文件(031.in

666 999
1 1
1 2
2 2
4 3
3 4
4 4
5 5
6 5
6 6
7 7
8 7
7 8
9 9
9 10
10 10
12 11
11 12
12 12
13 13
14 13
<7576 bytes omitted>

答案文件(031.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #32
Accepted
得分:100
用时:4 ms
内存:3012 KiB

输入文件(032.in

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

<7576 bytes omitted>

答案文件(032.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #33
Accepted
得分:100
用时:4 ms
内存:3064 KiB

输入文件(033.in

666 999
2 1
1 2
2 2
3 3
4 3
4 4
6 5
5 6
6 6
7 7
7 8
8 8
9 9
10 9
10 10
11 11
11 12
12 12
13 13
14 13
<7576 bytes omitted>

答案文件(033.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #34
Accepted
得分:100
用时:4 ms
内存:3068 KiB

输入文件(034.in

666 999
2 1
1 2
2 2
3 3
4 3
3 4
5 5
6 5
5 6
8 7
7 8
8 8
9 9
10 9
10 10
11 11
11 12
12 12
13 13
14 13
<7575 bytes omitted>

答案文件(034.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #35
Accepted
得分:100
用时:7 ms
内存:3164 KiB

输入文件(035.in

666 999
2 1
1 2
2 2
3 3
3 4
4 4
5 5
6 5
6 6
7 7
7 8
8 8
9 9
10 9
10 10
11 11
11 12
12 12
13 13
14 13
<7576 bytes omitted>

答案文件(035.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #36
Accepted
得分:100
用时:5 ms
内存:3060 KiB

输入文件(036.in

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

<7575 bytes omitted>

答案文件(036.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #37
Accepted
得分:100
用时:5 ms
内存:3032 KiB

输入文件(037.in

666 999
1 1
2 1
2 2
3 3
3 4
4 4
6 5
5 6
6 6
7 7
8 7
8 8
9 9
10 9
10 10
11 11
12 11
12 12
13 13
14 13
<7577 bytes omitted>

答案文件(037.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #38
Accepted
得分:100
用时:5 ms
内存:3064 KiB

输入文件(038.in

666 999
1 1
2 1
1 2
3 3
4 3
3 4
5 5
5 6
6 6
7 7
7 8
8 8
9 9
10 9
10 10
11 11
12 11
11 12
13 13
13 14
<7575 bytes omitted>

答案文件(038.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #39
Accepted
得分:100
用时:5 ms
内存:3048 KiB

输入文件(039.in

666 999
2 1
1 2
2 2
3 3
4 3
3 4
5 5
5 6
6 6
8 7
7 8
8 8
9 9
10 9
10 10
11 11
12 11
12 12
13 13
14 13
<7576 bytes omitted>

答案文件(039.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #40
Accepted
得分:100
用时:5 ms
内存:3064 KiB

输入文件(040.in

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

<7575 bytes omitted>

答案文件(040.out

666

用户输出

666

系统信息

Exited with return code 0
测试点 #41
Accepted
得分:100
用时:2 ms
内存:376 KiB

输入文件(041.in

1 1
1 1

答案文件(041.out

0

用户输出

0

系统信息

Exited with return code 0
测试点 #42
Accepted
得分:100
用时:4 ms
内存:372 KiB

输入文件(042.in

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

答案文件(042.out

9

用户输出

9

系统信息

Exited with return code 0
测试点 #43
Accepted
得分:100
用时:3 ms
内存:376 KiB

输入文件(043.in

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

答案文件(043.out

9

用户输出

9

系统信息

Exited with return code 0
测试点 #44
Accepted
得分:100
用时:4 ms
内存:756 KiB

输入文件(044.in

100 100
1 55
2 55
3 55
4 55
5 55
6 55
7 55
8 55
9 55
10 55
11 55
12 55
13 55
14 55
15 55
16 55
17 55
<500 bytes omitted>

答案文件(044.out

99

用户输出

99

系统信息

Exited with return code 0
测试点 #45
Accepted
得分:100
用时:4 ms
内存:376 KiB

输入文件(045.in

100 100
81 1
81 2
81 3
81 4
81 5
81 6
81 7
81 8
81 9
81 10
81 11
81 12
81 13
81 14
81 15
81 16
81 17
<500 bytes omitted>

答案文件(045.out

99

用户输出

99

系统信息

Exited with return code 0
测试点 #46
Accepted
得分:100
用时:6 ms
内存:4340 KiB

输入文件(046.in

1000 1000
1 608
2 608
3 608
4 608
5 608
6 608
7 608
8 608
9 608
10 608
11 608
12 608
13 608
14 608
1
<7803 bytes omitted>

答案文件(046.out

999

用户输出

999

系统信息

Exited with return code 0
测试点 #47
Accepted
得分:100
用时:5 ms
内存:504 KiB

输入文件(047.in

1000 1000
485 1
485 2
485 3
485 4
485 5
485 6
485 7
485 8
485 9
485 10
485 11
485 12
485 13
485 14
4
<7803 bytes omitted>

答案文件(047.out

999

用户输出

999

系统信息

Exited with return code 0