QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#797415 | #5511. Minor Evil | Ahoora# | AC ✓ | 2526ms | 120768kb | C++14 | 2.2kb | 2024-12-02 23:02:52 | 2024-12-02 23:02:52 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define bug(x) cerr << #x << " = " << x << '\n';
const int N = (int)(1e6) + 100;
int n, K, A[N], B[N], d[N], deg[N], pnt[N], S;
bool bad[N];
vector<pair<int, int>> adj[N];
void clear() {
for (int i = 0; i <= n; i++) {
bad[i] = false;
deg[i] = 0;
d[i] = -1;
pnt[i] = 0;
adj[i].clear();
}
}
void solve() {
cin >> n >> K;
for (int i = 0; i < K; i++) {
cin >> A[i] >> B[i];
--A[i], --B[i];
}
cin >> S;
for (int i = 0, v; i < S; i++) {
cin >> v;
--v;
bad[v] = true;
}
fill(d, d + n, -1);
set<pair<int, int>> q;
for (int i = 0; i < K; i++) {
if (!bad[B[i]])
continue;
if (!bad[A[i]]) {
adj[B[i]].push_back({B[i], i});
deg[B[i]]++;
d[B[i]] = i;
q.insert({i, B[i]});
} else {
adj[A[i]].push_back({B[i], i});
deg[A[i]]++;
}
}
for (int i = 0; i < n; i++) {
pnt[i] = 0;
sort(adj[i].begin(), adj[i].end(), [](pair<int, int> x, pair<int, int> y) {
return x.second < y.second;
});
}
while (!q.empty()) {
auto [dd, v] = *(--q.end());
q.erase(--q.end());
while (pnt[v] < deg[v] && adj[v][pnt[v]].second < dd) {
pair<int, int> e = adj[v][pnt[v]];
if (d[e.first] < e.second) {
q.erase({d[e.first], e.first});
d[e.first] = e.second;
q.insert({d[e.first], e.first});
}
pnt[v]++;
}
}
set<int> who;
for (int i = 0; i < n; i++)
if (bad[i] && d[i] == -1) {
cout << "NIE\n";
clear();
return;
} else {
who.insert(d[i]);
}
cout << "TAK\n";
for (int i = 0; i < K; i++)
if (who.count(i))
cout << "T";
else
cout << "N";
cout << '\n';
clear();
}
int main() {
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int Q;
cin >> Q;
while (Q--) {
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 3ms
memory: 37704kb
input:
2 5 6 1 2 2 1 2 5 2 3 2 4 4 2 3 1 2 3 3 2 1 2 2 3 2 2 3
output:
TAK NTNTNT NIE
result:
ok correct (2 test cases)
Test #2:
score: 0
Accepted
time: 555ms
memory: 51760kb
input:
1000 5 6 1 2 2 1 2 5 2 3 2 4 4 2 3 1 2 3 3 2 1 2 2 3 2 2 3 2 1 1 2 1 1 2 1 1 2 1 2 3 3 2 1 3 2 3 2 1 3 3 3 1 3 1 3 1 2 2 1 3 3 3 1 2 1 3 1 3 1 2 3 3 2 1 2 3 1 3 1 2 3 3 3 2 3 1 1 2 3 1 2 3 3 3 1 2 2 3 1 2 1 3 3 3 2 1 1 2 1 2 1 2 3 3 2 1 1 3 1 3 1 1 3 3 3 2 3 2 2 3 1 3 3 3 3 2 1 2 2 1 1 1 3 3 2 1 3 2...
output:
TAK NTNTNT NIE NIE TAK T NIE NIE TAK TNN NIE NIE TAK NTN TAK NNT TAK TNN TAK NNT TAK NNT TAK NNT NIE NIE NIE NIE NIE NIE NIE NIE NIE TAK NTNN TAK TNTN NIE NIE NIE NIE NIE NIE NIE TAK TNTN TAK NNTN TAK NNNT TAK NNTN NIE TAK NNTN NIE NIE TAK NNNT NIE TAK NNTN NIE NIE NIE NIE NIE NIE NIE NIE TAK NNT NI...
result:
ok correct (1000 test cases)
Test #3:
score: 0
Accepted
time: 955ms
memory: 94820kb
input:
13 1000000 1000000 486802 809159 104883 440551 501905 622668 279504 663293 839882 889531 125252 955226 270422 92128 363725 456993 513782 686348 292006 59538 112416 619373 150140 212648 891080 338487 348780 833779 186126 366730 294350 778236 173878 385135 831186 985800 868035 100117 752578 739541 457...
output:
NIE NIE NIE TAK NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...
result:
ok correct (13 test cases)
Test #4:
score: 0
Accepted
time: 410ms
memory: 83156kb
input:
4 1000000 1000000 883198 803418 803418 883198 883198 803418 803418 883198 883198 803418 803418 883198 803418 883198 883198 803418 883198 803418 883198 803418 883198 803418 883198 803418 803418 883198 883198 803418 803418 883198 803418 883198 883198 803418 883198 803418 883198 803418 803418 883198 88...
output:
NIE NIE NIE NIE
result:
ok correct (4 test cases)
Test #5:
score: 0
Accepted
time: 2526ms
memory: 120768kb
input:
4 1000000 1000000 820179 264070 64152 264070 264070 865675 614523 264070 264070 701152 609404 264070 793293 264070 264070 809556 467741 643260 337227 264070 264070 445071 248826 822649 856028 128336 367537 264070 81341 264070 476352 687682 306818 264070 123295 410991 255671 264070 61947 264070 24372...
output:
TAK NNNNTNNNNNTNNNNNNNNNNNTNTNNTNNNTNNTNNNTNTTTNNNNNTNNNNNNTNTTNNNTNNNTTTNTNNNNNTNNNNNTNTTNNTNNNTTTTNTNNNTNNTTTTNNTNTNNNNTTNTNTTTTNNNNNNNTNTNNNNTNNNNTTTNNNNNNTNTNNNNNTTNTTNNTNNNNTNTNTNNTTTNNTNNTNTNNTTNTNNNNNNNTNNNNTTNNNNNNNNNTNNTNNNTTNNTTNNTNNTNNNNTNNNTNTNNTTNNNNNTNNNNNNNTNTNNNTNTNNNNNNNTNNNNNTNTNNT...
result:
ok correct (4 test cases)
Test #6:
score: 0
Accepted
time: 1501ms
memory: 108028kb
input:
4 1000000 1000000 744622 299781 744622 837726 883242 744622 672533 744622 744622 685446 942503 744622 677083 744622 744622 624546 744622 586007 193995 744622 744622 276667 744622 733596 744622 458621 744622 685762 232706 744622 744622 460264 744622 683335 744622 708865 744622 893299 744622 254173 31...
output:
TAK TTNNTNNTTNTTTTNTTTTTNTTTTTNTTTNTNTTTTNTTTTTTTTTNNTTTTNTNNTTTTTTTTTTTNTTTTTTTTTTTNTNTTTNTTTTTTTTTTTTTTNNTNTNTTNTTTTTTNTTTTNTNTTNTTTTTTTTTTTTTNTTTTTTTNTTTTTTNTTNTTTNTTTTTTTTTNNTTTTTTTNTTTNTTTTTTTTNNNNTTTTTTTTTTTTTNNTTTTTTTTTNTTTNNTTNNTTTTTTTTTTTTTNTTTTTTTTTNTTTTTNTTTTTTTNNTTTTTTTTTTTTTNTTTTTTTNTNT...
result:
ok correct (4 test cases)