Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define MAXN 10010
- using namespace std;
- vector<int> grafo[MAXN];
- int marc[MAXN], sub[MAXN], nivel[MAXN], peso[MAXN];
- void dfs(int v){
- marc[v] = 1;
- sub[v] = 1;
- for(int i = 0; i < grafo[v].size(); i++){
- int viz = grafo[v][i];
- if (marc[viz] == 0){
- nivel[viz] = nivel[v] + 1;
- dfs(viz);
- sub[v] += sub[viz];
- }
- }
- }
- bool bal (int v){
- if (grafo[v].size() == 0){
- return true;
- }
- int atual_sub = sub[grafo[v][0]];
- for (int i = 0; i < grafo[v].size(); i++){
- int viz = grafo[v][i];
- if (atual_sub != sub[viz]){
- return false;
- }
- }
- int prox = grafo[v][0];
- return bal(prox);
- }
- int main (){
- int n; scanf("%d", &n);
- for (int i = 0; i < n; i++){
- int a, b; scanf("%d %d", &a, &b);
- grafo[b].push_back(a);
- }
- dfs(0);
- if(bal(0)){
- cout << "bem" << endl;
- }else{
- cout << "mal" << endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement