結果
| 問題 | No.3508 OR Mapping |
| コンテスト | |
| ユーザー |
tau1235
|
| 提出日時 | 2026-04-19 19:09:54 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,037 bytes |
| 記録 | |
| コンパイル時間 | 2,706 ms |
| コンパイル使用メモリ | 350,168 KB |
| 実行使用メモリ | 143,912 KB |
| 最終ジャッジ日時 | 2026-04-19 19:10:15 |
| 合計ジャッジ時間 | 19,207 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 58 WA * 7 |
ソースコード
#include<bits/stdc++.h>
#include<atcoder/scc>
using namespace std;
int main(){
int n,m,K;
cin>>n>>m>>K;
vector<vector<int>> g(n);
atcoder::scc_graph g2(n);
for (int i=0;i<m;i++){
int u,v;
cin>>u>>v;
u--;v--;
g[u].push_back(v);
g2.add_edge(u,v);
}
auto scc=g2.scc();
int k=scc.size();
vector<int> group(n);
for (int i=0;i<k;i++) for (int v:scc[i]) group[v]=i;
for (int i=0;i<k-1;i++){
bool f=false;
for (int v:scc[i]){
for (int u:g[v]){
if (group[u]==i+1) f=true;
}
}
if (!f){
cout<<"No\n";
return 0;
}
}
vector<int> col(n,-1);
vector<bool> bip(k,true);
auto dfs=[&](auto dfs,int v)-> void {
if (col[v]==-1) col[v]=0;
for (int u:g[v]){
if (group[v]!=group[u]) continue;
if (col[u]==-1){
col[u]=col[v]^1;
dfs(dfs,u);
}
if (col[u]!=col[v]^1) bip[group[v]]=false;
}
};
for (int i=0;i<n;i++) dfs(dfs,i);
if (count(bip.begin(),bip.end(),true)) cout<<"No\n";
else cout<<"Yes\n";
}
tau1235