```cpp
#include<vector>
#include<iostream>
#include<algorithm>
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() {
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) {
son.erase(idx);
solve();
}
void push(tree * x) {
son.push_back(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( a[1].gest());
++ans;
}
cout<<ans;
return 0;
}
```
by ___njr___ @ 2023-04-16 18:46:05
@[liuhaodong2021](/user/602624) RE
by ___njr___ @ 2023-04-16 18:46:21