QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#84704 | #4513. Slide Parade | fansizhe | 0 | 0ms | 0kb | C++23 | 1.6kb | 2023-03-06 17:24:47 | 2023-03-06 17:24:50 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
int n,m;
vector<int> edge[405];
int eid[205][205];
int vis[405];
int ex[5005],ey[5005];
int to[405];
int num[5005];
int mat[205][205];
int nosol;
void dfs(int x){
vis[x]=1;
for(int y:edge[x])if(!to[y]){to[x]=y,to[y]=x;return;}
for(int y:edge[x])if(!vis[y]){
int z=to[y];to[z]=0;
vis[y]=1;
to[x]=y,to[y]=x;
dfs(z);
return;
}
if(!to[x])nosol=1;
}
stack<int> st;
void solve(int x){
for(int y=1;y<=n;y++)if(mat[x][y])mat[x][y]--,solve(y);
st.push(x);
}
int main(){
int _;scanf("%d",&_);
for(int __=1;__<=_;__++){
scanf("%d%d",&n,&m);
for(int i=1;i<=2*n;i++)edge[i].clear();
memset(num,0,sizeof(num));
memset(to,0,sizeof(to));
memset(mat,0,sizeof(mat));
for(int i=1;i<=m;i++){
int x,y;scanf("%d%d",&x,&y);
edge[x].push_back(y+n);
edge[y+n].push_back(x);
ex[i]=x,ey[i]=y;
eid[x][y]=i;
}
for(int i=1;i<=n;i++){
memset(vis,0,sizeof(vis));
dfs(i);
if(nosol)break;
}
if(nosol){printf("Case #%d: IMPOSSIBLE\n",__);nosol=0;continue;}
for(int i=1;i<=n;i++)num[eid[i][to[i]-n]]++;
for(int i=1;i<=m;i++)if(!num[i]){
memset(vis,0,sizeof(vis));
int x=ex[i],y=ey[i]+n,tx=to[x],ty=to[y];
to[x]=y,to[y]=x;vis[x]=vis[y]=1;
to[ty]=to[tx]=0;dfs(tx);
for(int j=1;j<=n;j++)num[eid[j][to[j]-n]]++;
}
for(int i=1;i<=m;i++)mat[ex[i]][ey[i]]=num[i];
for(int i=1;i<=n;i++){
int in=0,out=0;
for(int j=1;j<=n;j++)in+=mat[j][i],out+=mat[i][j];
assert(in==out);
}
solve(1);
printf("Case #%d: %d\n",__,st.size());
while(!st.empty())printf("%d ",st.top()),st.pop();puts("");
}
return 0;
}
詳細信息
Test #1:
score: 0
Dangerous Syscalls
input:
100 5 8 1 2 1 3 1 4 1 5 2 1 3 1 4 1 5 1 5 10 1 3 1 4 2 3 2 5 3 1 3 4 3 5 4 2 5 1 5 3 5 10 1 4 2 3 2 5 3 1 3 5 4 2 4 3 4 5 5 1 5 2 3 6 1 2 1 3 2 1 2 3 3 1 3 2 5 10 1 2 1 5 2 3 2 4 3 1 4 3 4 5 5 2 5 3 5 4 4 10 1 2 1 3 1 4 2 1 2 3 2 4 3 1 3 4 4 2 4 3 5 10 1 2 1 3 2 1 2 4 3 1 3 5 4 2 4 5 5 3 5 4 5 10 1 ...
output:
result:
Test #2:
score: 0
Dangerous Syscalls
input:
100 199 4980 1 95 1 96 1 105 1 124 1 130 1 131 1 135 1 137 1 139 1 140 1 141 1 147 1 155 1 172 1 174 1 179 1 183 1 188 1 193 1 196 1 197 2 3 2 5 2 13 2 14 2 17 2 20 2 24 2 26 2 30 2 41 2 44 2 45 2 52 2 56 2 67 2 70 2 71 2 74 2 78 2 84 2 85 2 90 2 92 2 93 2 97 2 107 2 111 2 113 2 122 2 124 2 128 2 13...
output:
Case #1: IMPOSSIBLE Case #2: IMPOSSIBLE Case #3: 611401 1 18 13 9 5 3 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17 7 4 17...