CE
查看原帖
CE
602624
___njr___楼主2023/4/12 13:51
#include <bits/stdc++.h>
using namespace std;
int n , m , q ;
class tree{
	int val ;
	vector<tree*> son;
	tree * fat;
	vector<tree*>::iterator largest;
public:
	vector<tree*>::iterator gest(tree * x) {
		return largest;
	}
	void solve() {
		int t = 0;
		val = 0;
		largest = son.begin();
		for(vector<tree*>::iterator i = son.begin() ; i != son.end() ; ++i) {
			if(i->val > t) {
				largest = i ;
				t = i -> val;
			}
			val += i->val ;
		}
	}
	void cut(vector<tree*>::iterator idx = gest(this)) {
		son.erase(idx);
		solve();
	}
	void push(tree * x) {
		son.push(x);
		solve();
		if(fat != this) fat -> solve() ;
	}
	bool leaf() {
		return son.size() == 0;
	}
	bool head() {
		return this == fat;
	}
};
int main()
{
	cin>>n>>m>>q;
	tree a[518];
	while(m--) {
		int x , y;
		cin>>x>>y;
		a[x].push(a+y);
	}
	int ans = 0;
	while(!a[1].leaf()) {
		a[1].cut();
		++ans;
	}
	return 0;
}
2023/4/12 13:51
加载中...