MnZn非袜子刚学OI
如题 码 把数据下载下来本地测试通过,但是在在线 IDE 或者评测机上都 WA 了。
19
LD ClI
XWrrlN bdImVhp
GhWEH p
FPiihGC zu
TYjF AGzOm
gh z
nlMLe kjJ
rfQOyb DDa
o qmwrq
SEsQexn OdMszrrr
pRc DMKt
myZXiAZ mqtcYzG
wbaznp aRPGD
Yoa JQdHO
J EHRDjLzW
koyhjgy t
AQLfe Oip
mSC W
egxQNz nnaxw
38
wbaznp DMKt
FPiihGC AGzOm
Yoa bdImVhp
Yoa nnaxw
Yoa EHRDjLzW
nlMLe nnaxw
nlMLe mqtcYzG
AQLfe t
SEsQexn DMKt
gh bdImVhp
FPiihGC Oip
TYjF t
AQLfe W
SEsQexn aRPGD
rfQOyb zu
nlMLe p
egxQNz DMKt
FPiihGC mqtcYzG
GhWEH mqtcYzG
LD aRPGD
LD t
o AGzOm
FPiihGC JQdHO
GhWEH OdMszrrr
nlMLe DMKt
rfQOyb AGzOm
o Oip
FPiihGC qmwrq
GhWEH DMKt
AQLfe DMKt
o JQdHO
TYjF nnaxw
FPiihGC kjJ
gh W
Yoa mqtcYzG
gh qmwrq
wbaznp kjJ
koyhjgy nnaxw
Safe
Safe
Unsafe
Safe
Safe
Safe
Unsafe
Safe
Safe
Unsafe
Safe
Safe
Unsafe
Safe
Safe
Safe
Safe
Safe
Safe
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<stack>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/hash_policy.hpp>
//快读
inline void chkmin(auto &x,auto y){if(y<x)x=y;}
inline void chkmax(auto &x,auto y){if(x<y)x=y;}
constexpr int kN=8e3+7;
int n,m,dfs_clock,cnt,low[kN],dfn[kN],bl[kN],vis[kN],siz[kN];
std::stack<int>s;
std::string s1,s2;
std::basic_string<int>g[kN];
__gnu_pbds::gp_hash_table<std::string,int>a;
void tarjan(int u){
low[u]=dfn[u]=++dfs_clock;
vis[u]=true;s.emplace(u);
for(int v:g[u])
if(!dfn[v])tarjan(v),chkmin(low[u],low[v]);
else if(vis[v])chkmin(low[u],dfn[v]);
if(low[u]==dfn[u]){
bl[u]=++cnt,vis[u]=false,siz[cnt]++;
for(;s.top()!=u;s.pop())bl[s.top()]=cnt,vis[s.top()]=false,siz[cnt]++;
s.pop();
}
}
signed main(){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
fio>>n;for(int i=1;i<=(n<<1);i+=2)fio>>s1>>s2,a[s1]=i,a[s2]=i+1,g[i+1]+=i;
fio>>m;for(int i=1;i<=m;i++)fio>>s1>>s2,g[a[s1]]+=a[s2];
for(int i=1;i<=(n<<1);i+=2)if(!dfn[i])tarjan(i);
for(int i=1;i<=(n<<1);i+=2)fio<<(bl[i]==bl[i+1]?"Unsafe\n":"Safe\n");
return 0;
}