萌新刚学网络瘤,全T求助

P2055 [ZJOI2009] 假期的宿舍

有几个地方sb了,但是还是全T 现在的代码 ```cpp #include <iostream> #include <cstdio> #include <cstring> #include <queue> #define _min(a,b) ((a)<(b)?(a):(b)) using namespace std; inline int read(){ register int x=0,f=0,ch=getchar(); while('0'>ch||ch>'9')f^=ch=='-',ch=getchar(); while('0'<=ch&&ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=getchar(); return f?-x:x; } queue<int>q; const int MAX=1005,INF=1e9; struct E{ int e,next,w; }e[MAX<<1]; int cnt=2,cur[MAX],head[MAX],dep[MAX]; int t,n; int op[MAX],x,S,T,tot; inline void add(int u,int v,int w){ e[cnt]=(E){v,head[u],w};head[u]=cnt++; e[cnt]=(E){u,head[v],0};head[v]=cnt++; } int dfs(int x,int t,int mflow){ if(x==t||mflow==0)return mflow; register int flow=0,res=0; for(register int i=cur[x];i;i=e[i].next){ cur[x]=i; if(dep[e[i].e]==dep[x]+1){ res=dfs(e[i].e,t,_min(mflow,e[i].w)); if(res){ flow+=res;mflow-=res; e[i].w-=res,e[i^1].w+=res; if(mflow==0)break; } } } return flow; } inline bool bfs(int s,int t){ for(register int i=0;i<=T;++i)cur[i]=head[i],dep[i]=0; dep[s]=1;while(!q.empty())q.pop();q.push(s); while(!q.empty()){ x=q.front(); q.pop(); for(register int i=head[x];i;i=e[i].next){ if(!dep[e[i].e]&&e[i].w){ dep[e[i].e]=dep[x]+1; q.push(e[i].e); } } } return dep[t]>0; } int ans; inline int dinic(){ while(bfs(S,T))ans+=dfs(S,T,INF); return ans; } inline void build(){ cnt=2;tot=0; n=read();S=0,T=n<<1|1; for(register int i=1;i<=n;++i){ op[i]=read(); if(op[i]==1)add(i+n,T,1); } for(register int i=1;i<=n;++i){ if(op[i]==0||(op[i]==1&&read()==0))add(S,i,1),++tot; } for(register int i=1;i<=n;++i){ for(register int j=1;j<=n;++j){ if(read()==1||i==j)add(i,j+n,1); } } } signed main(){ t=read(); while(t--){ build(); if(dinic()==tot)puts("^_^"); else puts("T_T"); } return 0; } ```
by EEchoyukii @ 2020-04-06 22:44:20


网络瘤可海星。
by xh39 @ 2020-04-06 22:58:57


~~qndmx~~
by _Zhumingrui @ 2020-04-06 23:12:58


Orz
by jwcub @ 2020-04-07 08:05:12


~~qndmx~~ Orz
by stdout @ 2020-04-07 08:59:06


|