50f,蒟蒻不知道哪里错了
#include<bits/stdc++.h>
using namespace std;
int s,pxh[100010],ss,sum,n,k,qw,i,j,ans,we;
bool wz[100010];
void sf(int qwq)
{
if(!qwq || wz[qwq])
{
if(qwq==we) ++ans;
return ;
}
wz[qwq]=true;
++ans;
sf(pxh[qwq]);
}
int main()
{
cin>>n>>k;
for(i=1;i<=k;i++)
{
cin>>ss;
for(j=1;j<=ss;j++)
{
cin>>s;
pxh[++sum]=s;
if(s==sum) wz[sum]==true;//正确的
}
}
for(i=1;i<=sum;i++)
if(!wz[i])//当前位置不正确
{
we=qw=pxh[i];
sf(qw);
}
if(ans) cout<<"We need "<<ans<<" move operations.";
else cout<<"No optimization needed.";
return 0;
}