QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#92681 | #4513. Slide Parade | chenshi | 0 | 791ms | 50084kb | C++14 | 1.8kb | 2023-03-30 20:50:23 | 2023-03-30 20:50:26 |
Judging History
answer
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
const int o=1e6+10;
int Tc,n,m,S,T,h[o],cur[o],cnt,d[o],ind[o],outd[o],flow,u[o],v[o],id[o],st[o],tp;queue<int> q;
struct Edge{int v,p,c;}e[o];
inline void ad_(int U,int V){e[++cnt].v=V;e[cnt].p=h[U];h[U]=cnt;}
inline void ad(int U,int V,int C){e[++cnt].v=V;e[cnt].p=h[U];e[h[U]=cnt].c=C;}
inline void add(int ST,int ED,int CA){ad(ST,ED,CA);ad(ED,ST,0);}
inline bool bfs(){
for(int i=S;i<=T;++i) d[i]=0,cur[i]=h[i];
for(q.push(S),d[S]=1;!q.empty();q.pop()) for(int i=h[q.front()];i;i=e[i].p)
if(e[i].c&&!d[e[i].v]) d[e[i].v]=d[q.front()]+1,q.push(e[i].v);
return d[T];
}
int dfs(int A,int B){
if(A==T||!B) return B;
int res=0,x;
for(int&i=cur[A];i;i=e[i].p) if(e[i].c&&d[e[i].v]==d[A]+1)
{x=dfs(e[i].v,min(B-res,e[i].c));e[i].c-=x;e[i^1].c+=x;if((res+=x)==B) return B;}
return res;
}
void Dfs(int nw){int t;for(int&i=h[nw];i;) t=e[i].v,i=e[i].p,Dfs(t),st[++tp]=nw;}
inline void slv(){
scanf("%d%d",&n,&m);S=0;T=n*2+1;cnt=1;flow=0;
for(int i=S;i<=T;++i) h[i]=0;
for(int i=1;i<=n;++i) ind[i]=outd[i]=0;
for(int i=1;i<=m;++i) scanf("%d%d",&u[i],&v[i]),++ind[v[i]],++outd[u[i]],add(u[i],v[i]+n,o),id[i]=cnt;
for(int i=1;i<=n;++i){
if(ind[i]>m||outd[i]>m){/*printf("IMPOSSIBLE\n");*/return;}
add(i+n,T,m-ind[i]);add(S,i,m-outd[i]);flow+=m-ind[i];
}
for(;bfs();flow-=dfs(S,o));
if(flow){/*printf("IMPOSSIBLE\n");*/return;}
cnt=0;
for(int i=1;i<=n;++i) h[i]=0;
for(int i=1;i<=m;++i) for(int j=e[id[i]].c+1;j--;) ad_(u[i],v[i]);
st[tp=0]=1;Dfs(1);
// printf("%d\n",tp+1);
// for(int i=tp;i+1;--i) printf("%d ",st[i]);
// putchar('\n');
}
int main(){
scanf("%d",&Tc);
for(int i=1;i<=Tc;++i){
slv();
if(i==25){
printf("%d %d\n",n,m);
for(int j=1;j<=m;++j) printf("%d %d\n",u[j],v[j]);
}
// printf("Case #%d: ",i),slv();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 22124kb
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:
6 6 1 6 2 1 3 4 4 5 5 3 6 2
result:
wrong output format Expected 'Case' but found '6' (test case 1)
Test #2:
score: 0
Wrong Answer
time: 791ms
memory: 50084kb
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:
199 5000 1 99 1 104 2 3 2 11 2 20 2 21 2 32 2 33 2 34 2 35 2 37 2 47 2 49 2 50 2 55 2 59 2 66 2 71 2 72 2 74 2 77 2 82 2 85 2 87 2 88 2 89 2 91 2 92 2 93 2 97 2 99 2 102 2 108 2 109 2 112 2 113 2 114 2 115 2 120 2 121 2 131 2 136 2 143 2 145 2 152 2 156 2 158 2 159 2 162 2 163 2 177 2 188 2 198 3 5 ...
result:
wrong output format Expected 'Case' but found '199' (test case 1)