编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#22222 #1115. 2-11G. JM的玄学旅社 Accepted 100 4701 ms 158056 K C++ 11 / 2.3 K docriz🦆 2020-02-12 0:35:24
显示原始代码
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 3005;

int dis[MAXN][MAXN];
int dis2[MAXN][MAXN];

vector<int> G[MAXN];
vector<int> G2[MAXN];
vector<pair<int, int>> max_dis[MAXN];
vector<pair<int, int>> max_dis2[MAXN];

int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        int x, y;
        cin >> x >> y;
        G[x].push_back(y);
        G2[y].push_back(x);
    }
    memset(dis, 127 / 3, sizeof(dis));
    memset(dis2, 127 / 3, sizeof(dis2));
    for (int i = 1; i <= n; i++) {
        queue<int> Q;
        dis[i][i] = 0;
        Q.push(i);
        while (!Q.empty()) {
            int cur = Q.front();
            Q.pop();
            for (auto nx : G[cur]) {
                if (dis[i][cur] + 1 < dis[i][nx]) {
                    dis[i][nx] = dis[i][cur] + 1;
                    Q.push(nx);
                }
            }
        }
        dis2[i][i] = 0;
        Q.push(i);
        while (!Q.empty()) {
            int cur = Q.front();
            Q.pop();
            for (auto nx : G2[cur]) {
                if (dis2[i][cur] + 1 < dis2[i][nx]) {
                    dis2[i][nx] = dis2[i][cur] + 1;
                    Q.push(nx);
                }
            }
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            if (i == j || dis[i][j] == dis[0][0])
                continue;
            max_dis[i].push_back(make_pair(-dis[i][j], j));
        }
        for (int j = 1; j <= n; j++) {
            if (i == j || dis2[i][j] == dis[0][0])
                continue;
            max_dis2[i].push_back(make_pair(-dis2[i][j], j));
        }
        sort(max_dis[i].begin(), max_dis[i].end());
        sort(max_dis2[i].begin(), max_dis2[i].end());
    }
    int ans = 0;
    int min_b = -1;
    for (int b = 1; b <= n; b++) {
        for (int c = 1; c <= n; c++) {
            if (b == c || dis[b][c] == dis[0][0])
                continue;
            vector<int> A, D;
            for (int i = 0; i < min(2, (int)max_dis2[b].size()); i++) {
                A.push_back(max_dis2[b][i].second);
            }
            for (int i = 0; i < min(2, (int)max_dis[c].size()); i++) {
                D.push_back(max_dis[c][i].second);
            }
            for (auto a : A) {
                for (auto d : D) {
                    if (a == b || a == c || a == d || d == b || d == c)
                        continue;
                    int new_ans = dis[a][b] + dis[b][c] + dis[c][d];
                    if (new_ans > ans) {
                        ans = new_ans;
                        min_b = b;
                    }
                }
            }
        }
    }
    cout << ans << " " << min_b << endl;
    return 0;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:35 ms
内存:71168 KiB

输入文件(1.in

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

答案文件(1.out

13 1

用户输出

13 1

系统信息

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

输入文件(2.in

6 16
1 4
1 4
1 1
1 2
2 6
3 3
3 4
3 3
4 6
4 6
5 1
5 2
5 5
5 5
5 2
6 4

答案文件(2.out

4 1

用户输出

4 1

系统信息

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

输入文件(3.in

9 20
2 5
3 2
3 4
4 8
4 4
4 3
4 3
4 3
5 9
5 2
5 1
6 2
6 3
7 1
7 9
7 7
8 9
8 9
9 4
<6 bytes omitted>

答案文件(3.out

13 2

用户输出

13 2

系统信息

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

输入文件(4.in

16 23
1 5
2 16
2 6
2 5
3 16
5 6
5 10
5 5
6 4
6 4
6 9
8 10
9 3
11 2
11 12
11 9
12 14
<38 bytes omitted>

答案文件(4.out

14 2

用户输出

14 2

系统信息

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

输入文件(5.in

4 35
1 1
1 1
1 1
1 4
1 2
1 1
1 1
1 1
1 1
2 4
2 2
2 1
2 4
2 2
2 1
2 4
2 2
2 2
2 3
<81 bytes omitted>

答案文件(5.out

5 1

用户输出

5 1

系统信息

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

输入文件(6.in

8 29
1 7
1 2
1 6
1 6
1 7
2 3
2 2
2 1
3 7
3 6
3 7
4 3
4 8
5 4
5 4
5 7
5 7
6 1
6 3
<51 bytes omitted>

答案文件(6.out

12 2

用户输出

12 2

系统信息

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

输入文件(7.in

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

答案文件(7.out

5 3

用户输出

5 3

系统信息

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

输入文件(8.in

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

答案文件(8.out

5 2

用户输出

5 2

系统信息

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

输入文件(9.in

155 2891
34 112
28 62
145 48
30 66
28 4
99 31
4 70
104 53
131 135
5 59
37 127
66 124
43 115
41 30
6 
<18932 bytes omitted>

答案文件(9.out

9 1

用户输出

9 1

系统信息

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

输入文件(10.in

648 4723
6 120
344 200
1 442
58 89
324 164
255 306
393 556
174 596
361 139
568 580
267 9
231 242
335
<36170 bytes omitted>

答案文件(10.out

18 37

用户输出

18 37

系统信息

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

输入文件(11.in

1975 2882
318 170
1821 301
728 505
721 913
1365 1157
1459 672
1950 242
1371 55
1072 809
141 1068
140
<25524 bytes omitted>

答案文件(11.out

108 1168

用户输出

108 1168

系统信息

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

输入文件(12.in

2032 3056
315 1657
1844 659
46 236
1835 675
342 746
961 1216
915 523
203 592
1170 938
127 108
217 18
<27211 bytes omitted>

答案文件(12.out

98 647

用户输出

98 647

系统信息

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

输入文件(13.in

3000 5000
2649 200
2603 967
889 1881
1332 2220
1266 1396
400 716
593 478
2106 133
2768 1251
2796 118
<46247 bytes omitted>

答案文件(13.out

94 1152

用户输出

94 1152

系统信息

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

输入文件(14.in

3000 5000
181 130
509 499
1771 1501
131 2975
790 62
2583 1938
1035 773
1538 1806
2633 295
406 2217
1
<46264 bytes omitted>

答案文件(14.out

91 602

用户输出

91 602

系统信息

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

输入文件(15.in

2990 3500
1211 1075
539 2609
1676 2371
223 1964
1203 2386
1811 1609
1890 188
2224 1397
732 2718
596 
<32270 bytes omitted>

答案文件(15.out

93 241

用户输出

93 241

系统信息

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

输入文件(16.in

3000 4000
1511 2959
567 2183
1026 1949
2034 1021
2852 1665
2441 2170
2503 2261
188 2565
1823 2033
14
<36964 bytes omitted>

答案文件(16.out

17 30

用户输出

17 30

系统信息

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

输入文件(17.in

3000 2999
2712 2915
2294 1910
2794 1980
1940 697
1981 1447
792 2721
150 740
252 166
547 64
1571 2866
<27686 bytes omitted>

答案文件(17.out

12 184

用户输出

12 184

系统信息

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

输入文件(18.in

500 5000
62 170
473 455
341 121
117 343
447 160
436 125
323 48
331 468
343 108
279 250
333 475
121 1
<37757 bytes omitted>

答案文件(18.out

15 17

用户输出

15 17

系统信息

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

输入文件(19.in

1000 1000
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
1
<8697 bytes omitted>

答案文件(19.out

2997 1

用户输出

2997 1

系统信息

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

输入文件(20.in

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

答案文件(20.out

12 1

用户输出

12 1

系统信息

Exited with return code 0