QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#227223 | #7503. Too Many Edges | dozicc | AC ✓ | 6379ms | 15096kb | C++14 | 1.7kb | 2023-10-27 03:03:50 | 2023-10-27 03:03:51 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int n;
vector<int>graff[50050], grev[50050];
map<pair<int, int>, bool> check;
int anc[50050], dist[50050];
bool visited[50050];
vector<int> answer;
void dfs(int v)
{
visited[v]=true;
for(int u: graff[v])
{
if(!visited[u])
dfs(u);
}
answer.push_back(v);
}
void topological_sort()
{
for(int i=0; i<=n; i++)visited[i]=false;
answer.clear();
for (int i=1; i<=n; ++i)
{
if(!visited[i])
dfs(i);
}
reverse(answer.begin(), answer.end());
}
int main()
{
int m;
cin>>n>>m;
for(int i=0; i<m; i++)
{
int u, v; cin>>u>>v;
graff[u].push_back(v);
grev[v].push_back(u);
check[{u,v}]=true;
}
while(true)
{
for(int i=0; i<=n; i++)
{
anc[i]=0; dist[i]=0;
}
topological_sort();
for(int k=0; k<answer.size(); k++)
{
int i=answer[k];
for(int j=0; j<grev[i].size(); j++)
{
if(check[{grev[i][j],i}])
{if(dist[grev[i][j]]+1>dist[i]){anc[i]=grev[i][j]; dist[i]=dist[grev[i][j]]+1;}}
}
}
int idmax=0, maks=0;
bool ans=true;
for(int i=0; i<=n; i++)
{
if(dist[i]>maks){maks=dist[i]; idmax=i;}
}
while(true)
{
if(anc[idmax]==0){cout<<"! "<<maks<<endl; return 0;}
cout<<"? "<<anc[idmax]<<" "<<idmax<<endl;
cin>>ans;
if(!ans){check[{anc[idmax], idmax}]=false; break;}
idmax=anc[idmax];
}
if(!ans)continue;
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5792kb
input:
5 5 1 2 1 3 2 5 3 4 4 5 1 0 1 1
output:
? 4 5 ? 3 4 ? 2 5 ? 1 2 ! 2
result:
ok Correct answer
Test #2:
score: 0
Accepted
time: 3ms
memory: 5876kb
input:
230 470 212 98 107 123 116 72 158 83 135 111 78 123 221 217 214 203 28 221 229 3 111 127 128 13 125 116 180 78 175 191 182 99 194 6 12 83 209 29 169 129 192 208 145 38 33 86 104 85 145 82 38 82 193 153 109 41 199 194 89 72 161 227 36 177 13 141 173 110 212 77 155 81 87 82 104 172 148 182 170 222 68 ...
output:
? 124 151 ? 73 124 ? 210 73 ? 99 210 ? 182 99 ? 148 182 ? 97 148 ? 92 97 ? 136 92 ? 31 136 ? 171 31 ? 184 171 ? 208 184 ? 146 208 ? 68 146 ? 203 68 ? 4 203 ? 74 4 ? 219 74 ? 88 219 ? 157 88 ? 43 157 ? 126 43 ? 228 126 ? 16 228 ? 213 16 ? 214 213 ? 133 214 ? 37 133 ? 216 37 ? 32 216 ? 122 32 ? 49 122...
result:
ok Correct answer
Test #3:
score: 0
Accepted
time: 6379ms
memory: 14532kb
input:
32500 94033 5330 27480 6016 11178 29267 1197 5789 21547 23714 25915 15710 17107 16950 10411 13998 15431 11106 14400 927 25530 18890 3967 11978 17027 2434 683 20135 5988 10802 22709 29179 6971 24499 12498 10977 795 30366 3120 4051 21131 25859 15273 19124 10952 14475 11243 11810 1265 7311 2036 385 158...
output:
? 31700 11512 ? 11240 31700 ? 30299 11240 ? 29669 30299 ? 14903 29669 ? 29261 14903 ? 3190 29261 ? 29839 3190 ? 2312 29839 ? 851 2312 ? 30214 851 ? 21823 30214 ? 26688 21823 ? 23280 26688 ? 7744 23280 ? 29774 7744 ? 12608 29774 ? 30655 12608 ? 29921 30655 ? 14832 29921 ? 4725 14832 ? 22499 4725 ? 69...
result:
ok Correct answer
Test #4:
score: 0
Accepted
time: 5676ms
memory: 14460kb
input:
36000 90053 30475 13651 22999 24861 5951 9742 17517 23989 18959 6538 19553 11038 25437 54 12236 7008 3442 9514 7624 30567 5054 23318 21048 4679 6580 31177 12845 5309 31293 10448 25535 15480 7341 8165 23069 17566 25018 15241 706 18925 8811 14849 30704 24536 10309 25098 27442 20863 33703 13600 17627 2...
output:
? 5617 519 ? 23733 5617 ? 3426 23733 ? 23793 3426 ? 23558 23793 ? 12631 23558 ? 18270 12631 ? 18024 18270 ? 10796 18024 ? 29421 10796 ? 25898 29421 ? 1156 25898 ? 18733 1156 ? 405 18733 ? 2738 405 ? 10094 2738 ? 20561 10094 ? 26090 20561 ? 22975 26090 ? 33565 22975 ? 9571 33565 ? 16155 9571 ? 26137 ...
result:
ok Correct answer
Test #5:
score: 0
Accepted
time: 3572ms
memory: 12552kb
input:
1000 90666 693 375 340 106 283 416 832 864 597 973 285 987 662 444 384 672 508 47 794 463 24 133 230 954 48 584 540 707 87 218 264 845 586 992 247 597 654 706 306 812 294 386 533 120 999 942 879 981 203 78 678 341 534 577 612 281 509 41 199 567 311 661 936 211 693 750 44 7 334 375 224 859 393 228 45...
output:
? 544 60 ? 564 544 ? 82 564 ? 386 82 ? 544 60 ? 564 544 ? 82 564 ? 182 82 ? 746 182 ? 317 746 ? 871 317 ? 544 60 ? 564 544 ? 507 564 ? 823 507 ? 544 60 ? 564 544 ? 82 564 ? 182 82 ? 746 182 ? 687 746 ? 249 687 ? 21 249 ? 544 60 ? 615 544 ? 763 615 ? 823 763 ? 51 823 ? 871 51 ? 449 871 ? 187 449 ? 95...
result:
ok Correct answer
Test #6:
score: 0
Accepted
time: 4222ms
memory: 14148kb
input:
10000 99884 6716 7602 5917 3638 9554 2505 7904 6893 8915 7173 1819 2730 4845 9714 7482 4797 2183 781 5041 5987 9537 993 8484 3337 346 3291 6062 7613 1286 5687 9991 498 7433 4952 9597 5802 1137 8805 8083 6147 4717 5900 3773 118 3752 9992 9395 8969 1966 9404 2766 6267 1893 404 4181 5691 4387 8020 7127...
output:
? 1203 5183 ? 4758 1203 ? 4758 1980 ? 5026 4758 ? 3086 5026 ? 8773 3086 ? 9571 5629 ? 3531 9571 ? 5039 3531 ? 8773 5039 ? 3561 8773 ? 6669 3561 ? 7917 5629 ? 6347 7917 ? 4222 6347 ? 7476 5064 ? 5067 7476 ? 9518 5067 ? 5121 9518 ? 6724 5532 ? 654 6203 ? 8097 7030 ? 3993 8097 ? 9627 3993 ? 5121 9627 ?...
result:
ok Correct answer
Test #7:
score: 0
Accepted
time: 5229ms
memory: 15096kb
input:
40000 99987 234 24171 17105 36233 5533 12466 38544 18454 35367 21436 9444 8046 11745 26615 32997 35770 11004 25416 39988 7619 30595 16666 38275 20547 26230 11888 29603 5464 18435 37346 10469 19694 24129 29204 5336 37947 86 38735 31032 21467 14175 37267 38749 6213 38615 13802 15736 4270 25539 38284 1...
output:
? 32318 14482 ? 9083 32318 ? 3487 9083 ? 16352 3487 ? 20009 25528 ? 23120 20009 ? 9498 23120 ? 32081 9498 ? 38318 32081 ? 12482 326 ? 15928 12482 ? 20952 15928 ? 22368 1702 ? 369 22368 ? 18978 369 ? 1980 18978 ? 10411 1980 ? 10441 10411 ? 16052 10441 ? 14833 16052 ? 26759 14833 ? 18081 26759 ? 25765...
result:
ok Correct answer