로곡P2055[ZJOI 2009] 방학 기숙사--이분도 일치
이분도 일치;
가장자리를 연결하려면 상대방이 반드시 침대가 있어야 한다는 것을 주의해라!
코드는 다음과 같습니다.
#include
#include
#include
#include
using namespace std;
int T,n,hd[55],ct,pre[55];
bool in[55],hm[55],vis[55];
struct N{
int to,nxt;
N(int t=0,int n=0):to(t),nxt(n) {}
}ed[2505];
void add(int x,int y){ed[++ct]=N(y,hd[x]); hd[x]=ct;}
bool dfs(int x)
{
for(int i=hd[x],u;i;i=ed[i].nxt)
{
if(vis[u=ed[i].to])continue;
vis[u]=1;
if(!pre[u]||dfs(pre[u])){pre[u]=x; return 1;}
}
return 0;
}
int main()
{
scanf("%d",&T);
while(T--)
{
ct=0;
memset(hd,0,sizeof hd);
memset(in,0,sizeof in);
memset(hm,0,sizeof hm);
memset(pre,0,sizeof pre);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&in[i]);
if(in[i])add(i,i);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&hm[i]);
}
for(int i=1,x;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&x);
if(x&&in[j])add(i,j);// !!!
}
bool fl=0;
for(int i=1;i<=n;i++)
{
if(in[i]&&hm[i])continue;
memset(vis,0,sizeof vis);
if(!dfs(i)){fl=1; break;}//!
}
if(!fl)printf("%c%c%c
",94,95,94);
else printf("%c%c%c
",84,95,84);
}
return 0;
}
전재 대상:https://www.cnblogs.com/Zinn/p/9419716.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.