非常短的 fread 读入挂

xiaoxiao2021-02-28  66

#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=100005; const int BUF=30000000; char Buf[BUF],*buf=Buf; inline void read(int&a){for(a=0;*buf<48;buf++);while(*buf>47)a=a*10+*buf++-48;}//一句话解决 int t,n,m; int fa[maxn]; bool book[maxn]; int main() { //freopen("in.txt","r",stdin); fread(Buf,1,BUF,stdin);//重点 read(t); while(t--) { read(n); read(m); for(int i=2;i<=n;i++) { int x; read(x); fa[i]=x; } memset(book,0,sizeof book); int num=0; for(int i=n;i;i--) { if(!book[i]) book[fa[i]]=1; else num++; if(num*2>=m)break; } int ans; if(m<=num*2)ans=(m+1)/2; else ans=(m-num*2)+num; printf("%d\n",ans ); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-45879.html

最新回复(0)