QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#346795 | #3855. Regional development | Kirill22# | WA | 1ms | 3612kb | C++23 | 2.7kb | 2024-03-08 23:46:32 | 2024-03-08 23:46:32 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m, mod;
cin >> n >> m >> mod;
vector<int> a(m), b(m), c(m), tmp(n);
vector<vector<int>> g(n);
for (int i = 0; i < m; i++) {
cin >> a[i] >> b[i] >> c[i];
a[i]--, b[i]--;
tmp[a[i]] += c[i];
tmp[b[i]] -= c[i];
g[a[i]].push_back(i);
g[b[i]].push_back(i);
}
for (int v = 0; v < n; v++) {
while (tmp[v] > 0) {
bool find = false;
vector<int> stk, res;
set<array<int, 3>> usd;
function<void(int, int, int)> dfs = [&] (int v, int pr, int d) {
if (!usd.insert({v, pr, d}).second) {
return;
}
if (find) {
return;
}
if (tmp[v] < 0 && d == 1) {
find = true;
res = stk;
return;
}
for (auto i : g[v]) {
if (i == pr) {
continue;
}
int u = a[i] ^ b[i] ^ v;
if (v == a[i]) {
if (d == 0 && c[i] > 0) {
stk.push_back(i);
dfs(u, i, d ^ 1);
stk.pop_back();
} else if (d == 1 && c[i] < 0) {
stk.push_back(i);
dfs(u, i, d ^ 1);
stk.pop_back();
}
} else {
if (d == 0 && c[i] < 0) {
stk.push_back(i);
dfs(u, i, d ^ 1);
stk.pop_back();
} else if (d == 1 && c[i] > 0) {
stk.push_back(i);
dfs(u, i, d ^ 1);
stk.pop_back();
}
}
}
};
dfs(v, -1, 0);
for (auto i : res) {
tmp[a[i]] -= c[i];
tmp[b[i]] += c[i];
if (c[i] > 0) {
c[i] = c[i] - mod;
} else {
c[i] = c[i] + mod;
}
tmp[a[i]] += c[i];
tmp[b[i]] -= c[i];
}
}
}
for (int i = 0; i < m; i++) {
assert(c[i] != 0 && -mod < c[i] && c[i] < mod);
cout << c[i] << '\n';
}
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3612kb
input:
10 23 3 2 10 1 2 6 1 6 9 1 7 9 1 6 7 1 3 6 1 1 3 1 1 6 2 6 10 1 2 9 1 4 9 2 4 7 2 3 10 2 3 9 1 6 8 1 7 8 2 3 5 1 5 9 1 8 9 2 3 8 2 1 5 2 1 4 1 5 10 2
output:
1 -2 -2 1 1 1 1 2 1 1 -1 2 2 1 1 2 1 -2 2 2 2 1 -1
result:
wrong answer wrong plan