洛谷1640 bzoj1854游戏 匈牙利就是又短又快

时间:2022-03-03 22:56:58

bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个“大牛分站”,就转回洛谷做题了

水题先行,一道傻逼匈牙利

其实本来的思路是搜索然后发现写出来类似于匈牙利(⊙o⊙)

(匈牙利的复杂度惊人,1e6秒过)

 #include <cstdio>
bool b[];
int c[],fir[],to[],nex[];
int N,n,p,q;
void add(int p,int q)
{
nex[++N]=fir[p];to[N]=q;fir[p]=N;
}
bool find(int k)
{
b[k]=true;
for(int i=fir[k];i;i=nex[i])
if(!c[to[i]]) { c[to[i]]=k;b[k]=false;return true;}
else
if(!b[c[to[i]]] && find(c[to[i]]))
{
c[to[i]]=k;b[k]=false;return true;
}
b[k]=false;
return false;
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d",&p,&q);
if(p<=n) add(p,i+n);
if(q<=n) add(q,i+n);
}
for(int i=;i<=n;i++)
if(!find(i))
{
printf("%d",i-);
return ;
}
printf("%d",n);
return ;
}

现在感觉洛谷的界面比bzoj不知道友好到哪里去了