結果
| 問題 |
No.1744 Selfish Spies 1 (à la Princess' Perfectionism)
|
| コンテスト | |
| ユーザー |
umezo
|
| 提出日時 | 2021-11-15 03:56:26 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,291 bytes |
| コンパイル時間 | 5,086 ms |
| コンパイル使用メモリ | 269,940 KB |
| 最終ジャッジ日時 | 2025-01-25 18:24:58 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 WA * 17 |
ソースコード
#define rep(i,n) for(int i=0;i<(int)(n);i++)
#define ALL(v) v.begin(),v.end()
typedef long long ll;
#include <atcoder/all>
#include <bits/stdc++.h>
using namespace std;
using namespace atcoder;
int main(){
ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n,m,l;
cin>>n>>m>>l;
vector<int> S(l),T(l);
rep(i,l) cin>>S[i]>>T[i];
mf_graph<int> g(n+m+2);
rep(i,l) g.add_edge(S[i],n+T[i],1);
for(int i=1;i<=n;i++) g.add_edge(0,i,1);
for(int i=n+1;i<=n+m;i++) g.add_edge(i,n+m+1,1);
g.flow(0,n+m+1);
auto A=g.edges();
vector<int> C(n+1),D(m+1);
rep(i,l){
if(A[i].flow>0){
C[A[i].from]=1;
D[A[i].to-n]=1;
}
}
vector<int> E(n+1),F(m+1);
rep(i,l){
if(C[S[i]]==0){
E[S[i]]=1;
F[T[i]]=1;
}
if(D[T[i]]==0){
E[S[i]]=1;
F[T[i]]=1;
}
}
scc_graph g1(n+m+1);
rep(i,l){
if(E[S[i]]==1 || F[T[i]]==1) continue;
g1.add_edge(S[i],T[i]+n);
if(A[i].flow>0) g1.add_edge(T[i]+n,S[i]);
}
auto B=g1.scc();
map<pair<int,int>,int> M;
for(int i=0;i<B.size();i++){
if(B[i].size()==2){
int a=B[i][0],b=B[i][1];
if(a>b) swap(a,b);
M[{a,b-n}]=1;
}
}
rep(i,l){
if(M[{S[i],T[i]}]) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
}
return 0;
}
umezo