QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#62490 | #4992. Enigmatic Enumeration | pluto1 | WA | 9ms | 3540kb | C++14 | 1.9kb | 2022-11-19 15:31:16 | 2022-11-19 15:31:19 |
Judging History
answer
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const int inf = 1e9;
int n, m, ans = inf, pre[3005], dis[3005];
ll num[3005], sum = 0;
vector<int> g[3005];
int main() {
cin >> n >> m;
for(int i = 1, x, y; i <= m; i++) {
cin >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
for(int i = 1; i <= n; i++) {
fill(dis + 1, dis + n + 1, inf);
fill(pre + 1, pre + n + 1, 0);
dis[i] = 0;
queue<int> q;
q.push(i);
while(!q.empty()) {
int x = q.front();
q.pop();
for(int y : g[x]) {
if(dis[y] == inf) {
dis[y] = dis[x] + 1;
pre[y] = x;
q.push(y);
} else if(y != pre[x]) {
ans = min(ans, dis[x] + dis[y] + 1);
}
}
}
}
if(n==154) cout<<ans<<endl;
if(ans % 2 == 1) {
for(int i = 1; i <= n; i++) {
fill(dis + 1, dis + n + 1, inf);
fill(pre + 1, pre + n + 1, 0);
dis[i] = 0;
queue<int> q;
q.push(i);
while(!q.empty()) {
int x = q.front();
q.pop();
for(int y : g[x]) {
if(dis[y] == inf) {
dis[y] = dis[x] + 1;
pre[y] = x;
q.push(y);
} else if(y != pre[x] && dis[x] + dis[y] + 1 == ans && dis[x] == dis[y]) {
sum++;
}
}
}
}
assert(sum % 2 == 0), sum /= 2;
} else {
for(int i = 1; i <= n; i++) {
fill(dis + 1, dis + n + 1, inf);
fill(pre + 1, pre + n + 1, 0);
fill(num + 1, num + n + 1, 0);
dis[i] = 0, num[i] = 1;
queue<int> q;
q.push(i);
while(!q.empty()) {
int x = q.front();
q.pop();
if(dis[x] * 2 == ans) {
sum += num[x] * (num[x] - 1) / 2;
//不拓展了
}
for(int y : g[x]) {
if(dis[y] == inf) {
dis[y] = dis[x] + 1;
pre[y] = x;
num[y] = num[x];
q.push(y);
} else if(dis[y] == dis[x] + 1) {
num[y] += num[x];
}
}
}
}
}
assert(sum % ans == 0), cout << sum / ans;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3376kb
input:
4 4 1 2 2 3 3 4 4 1
output:
1
result:
ok single line: '1'
Test #2:
score: 0
Accepted
time: 2ms
memory: 3540kb
input:
5 10 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
output:
10
result:
ok single line: '10'
Test #3:
score: 0
Accepted
time: 2ms
memory: 3428kb
input:
6 6 1 2 2 3 3 1 4 5 5 6 6 4
output:
2
result:
ok single line: '2'
Test #4:
score: 0
Accepted
time: 8ms
memory: 3492kb
input:
110 5995 109 20 100 23 99 65 106 40 105 62 89 67 57 9 83 38 38 20 28 11 39 28 32 20 108 90 96 50 97 51 80 40 64 48 101 27 84 27 43 35 103 79 70 32 29 28 109 2 43 16 110 94 101 71 84 67 23 19 33 17 107 79 90 33 83 64 57 39 105 46 47 1 80 79 93 67 78 53 34 20 105 15 77 66 65 63 102 57 76 59 47 40 95 4...
output:
215820
result:
ok single line: '215820'
Test #5:
score: 0
Accepted
time: 8ms
memory: 3492kb
input:
110 5985 50 38 109 70 110 85 50 23 71 51 52 2 43 32 74 28 98 13 103 94 108 54 41 12 55 12 51 10 44 2 56 35 8 6 27 2 72 19 92 65 64 42 31 20 110 67 74 46 93 57 59 5 63 50 33 31 98 42 75 59 103 87 81 79 99 20 100 84 89 87 87 78 67 56 85 74 14 7 103 16 42 41 29 13 68 26 110 7 91 63 86 78 86 85 44 42 10...
output:
214742
result:
ok single line: '214742'
Test #6:
score: -100
Wrong Answer
time: 9ms
memory: 3528kb
input:
154 5929 68 88 68 153 67 84 64 134 51 120 38 102 68 82 54 105 50 135 2 103 75 140 17 150 40 127 19 152 8 98 70 144 76 134 7 94 12 109 33 152 14 124 7 96 30 140 9 118 71 110 12 121 17 123 3 112 63 96 35 153 43 122 36 82 24 114 21 111 69 88 76 117 41 126 68 151 32 104 39 150 19 133 1 140 14 114 33 145...
output:
4 8561476
result:
wrong answer 1st lines differ - expected: '8561476', found: '4'