QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#304569 | #8011. Institute | ucup-team987# | WA | 6ms | 22848kb | C++20 | 2.0kb | 2024-01-13 21:13:07 | 2024-01-13 21:13:08 |
Judging History
answer
#include<iostream>
#include<queue>
#include<cassert>
using namespace std;
//Strongly Connected Components
#include<vector>
struct SCC{
int n;
vector<int>comp,order;
vector<bool>used;
vector<vector<int> >G,RG;
SCC(int _n=0):n(_n),comp(_n,-1),used(_n,false),G(_n),RG(_n){}
void add_edge(int from,int to)
{
G[from].push_back(to);
RG[to].push_back(from);
}
void copy(const vector<vector<int> >&H)
{
for(int i=0;i<H.size();i++)
{
for(int j=0;j<H[i].size();j++)
{
G[i].push_back(H[i][j]);
RG[H[i][j]].push_back(i);
}
}
}
int operator[](int u)const{return comp[u];}
void dfs(int u)
{
used[u]=true;
for(int i=0;i<G[u].size();i++)if(!used[G[u][i]])dfs(G[u][i]);
order.push_back(u);
}
void rdfs(int u,int cnt)
{
comp[u]=cnt;
for(int i=0;i<RG[u].size();i++)if(comp[RG[u][i]]==-1)rdfs(RG[u][i],cnt);
}
int build()
{
for(int i=0;i<n;i++)if(!used[i])dfs(i);
int cnt=0;
for(int i=n-1;i>=0;i--)if(comp[order[i]]==-1)rdfs(order[i],cnt++);
return cnt;
}
int build(vector<vector<int> >&H)
{
int ret=build();
H.assign(ret,vector<int>());
for(int i=0;i<n;i++)
{
for(int j=0;j<G[i].size();j++)
{
if(comp[i]!=comp[G[i][j]])
H[comp[i]].push_back(comp[G[i][j]]);
}
}
return ret;
}
};
int N,M;
vector<int>G[3<<17],H[3<<17];
bool vis[3<<17];
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>N>>M;
SCC scc(N);
for(int i=0;i<M;i++)
{
int u,v,t;cin>>u>>v>>t;
u--,v--;
G[u].push_back(v);
if(t==2)
{
scc.add_edge(u,v);
H[u].push_back(v);
}
}
scc.build();
bool fn=false;
{
queue<int>Q;
Q.push(0);
vis[0]=true;
while(!Q.empty())
{
int u=Q.front();Q.pop();
for(int v:G[u])if(!vis[v])
{
vis[v]=true;
Q.push(v);
}
}
}
for(int i=0;i<N;i++)if(vis[i])
{
bool ok=true;
for(int v:H[i])if(scc[i]==scc[v])ok=false;
if(ok)fn=true;
}
cout<<(fn?"Yes\n":"No\n");
}
詳細信息
Test #1:
score: 100
Accepted
time: 6ms
memory: 22000kb
input:
3 4 1 2 1 2 3 2 3 2 1 3 1 2
output:
Yes
result:
ok answer is YES
Test #2:
score: 0
Accepted
time: 0ms
memory: 21968kb
input:
6 8 1 2 1 2 3 2 3 2 2 3 4 1 4 1 2 1 5 2 5 4 2 6 1 2
output:
No
result:
ok answer is NO
Test #3:
score: 0
Accepted
time: 3ms
memory: 22076kb
input:
1000 1000 141 466 1 634 659 1 179 96 2 445 344 2 993 974 1 310 114 2 32 333 1 758 832 1 834 1 1 874 825 2 480 61 2 765 100 2 804 616 1 496 545 1 786 261 2 899 263 1 962 237 2 766 807 1 561 583 1 35 425 1 201 291 1 6 142 1 61 386 2 785 861 2 386 986 2 288 769 2 850 209 1 660 259 2 258 143 2 646 715 2...
output:
Yes
result:
ok answer is YES
Test #4:
score: 0
Accepted
time: 0ms
memory: 22152kb
input:
1000 3000 719 279 2 857 23 1 984 625 2 904 509 2 892 456 2 589 195 2 718 932 2 608 363 1 474 672 1 217 993 2 165 895 2 727 329 2 932 404 2 952 146 2 201 272 2 412 895 2 228 267 2 396 365 2 813 794 2 259 250 1 968 764 2 100 76 2 924 665 2 981 931 2 292 975 2 903 649 2 793 101 2 54 703 1 853 58 2 356 ...
output:
Yes
result:
ok answer is YES
Test #5:
score: 0
Accepted
time: 3ms
memory: 22144kb
input:
1000 3000 686 470 2 132 418 2 775 962 2 814 8 2 450 767 2 580 243 2 742 534 2 508 304 2 396 513 2 731 385 2 499 309 2 144 150 2 111 209 2 340 189 1 219 755 2 511 655 2 428 941 2 165 707 2 253 619 2 140 766 2 999 132 2 415 101 2 887 192 2 598 262 2 312 675 1 97 527 2 407 179 2 11 154 1 107 996 2 586 ...
output:
No
result:
ok answer is NO
Test #6:
score: -100
Wrong Answer
time: 0ms
memory: 22848kb
input:
10000 10000 1496 8533 1 6761 8802 2 3147 8733 2 7074 899 1 4191 9520 2 2576 1464 1 8600 116 2 72 5894 1 1605 6769 1 344 2583 2 9951 8053 2 2663 1396 1 3172 7307 1 8490 8085 2 6623 7814 2 680 4471 2 4906 3810 1 5952 8860 1 9670 3644 2 7993 6329 2 4666 1119 2 3115 3676 2 4506 2979 2 1451 2540 2 5002 9...
output:
Yes
result:
wrong answer expected NO, found YES