题解: 树分块 每一次当个数大于B的时候分成一块 省会城市为当前子树根 然后最后剩下的节点和前一个分为一块 代码: #include<bits/stdc++.h> using namespace std; ; int ne[N],num,top,x,y,root[N],fi[N],zz[N],st[N],be[N],cnt,n,m; int jb(int x,int y) { ne[++num]=fi[x]; fi[x]=num; zz[num]=y; } void dfs(int x,int…