有 $n$ 个ZZK $m$ 个JZ,每个JZ可以虐两个指定的ZZK中的一个,一个ZZK被虐之后就心态爆炸不能再被虐,问从第一个JZ开始按顺序连续不断的虐ZZK,最多有多少个JZ能虐ZZK。
水水博客有利身体健康。
#include<cstdio>
using namespace std;
const int maxn=1000;
int n,m,a[maxn+5][2],who[maxn+5],ti,vis[maxn+5],ans;
bool Find(int x){
if (vis[x]==ti) return false;vis[x]=ti;
if (!who[a[x][0]]||Find(who[a[x][0]])) return who[a[x][0]]=x,true;
if (!who[a[x][1]]||Find(who[a[x][1]])) return who[a[x][1]]=x,true;
}
int main(){
freopen("program.in","r",stdin);
freopen("program.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++){
scanf("%d%d",&a[i][0],&a[i][1]);
if (ti++,Find(i)) ans++; else break;
}
return printf("%d\n",ans),0;
}