[ create a new paste ] login | about

Link: http://codepad.org/mloBEY4T    [ raw code | output | fork ]

C++, pasted on Jan 30:
#include<bits/stdc++.h>
using namespace std;
 
#define pb push_back
#define ll long long
#define maxn 100005
#define fr(i,j,k) for(int i=j;i<k;i++)
#define f(n) fr(i,0,n)
#define f1(n) fr(i,1,n+1)
#define ms(i) memset(i,0,sizeof(i));
#define F first
#define S second
const int mod = 1e9+7;
vector<int>g[4005];
vector<int>s[4005];
int sz[4005];
int f[4005];
int mx[4005];
int lb[4005];
int n;
int dfs(int now,int pre){
    vector<int>v;
    for(auto i:g[now]){
        if(i!=pre&&lb[i]==lb[now]){
            v.pb(dfs(i,now));
        }
    }
    sort(v.rbegin(),v.rend());
    ll ret = 73;
    for(auto i:v){
        ret *= 6171;
        ret += i;
        ret %= mod;
    }
    return ret;
}
void dfs3(int x){
    for(auto i:g[x]){
        if(~lb[i])continue;
        lb[i] = lb[x];
        dfs3(i);
    }
}
bool check(int x){
    set<int>st;
    f(n+1){
        lb[i] = -1;
    }
    lb[x] = 0;
    int cnt = 0;
    for(auto i:g[x]){
        cnt++;
        lb[i] = cnt;
        dfs3(i);
    }
    f1(n){
        if(lb[i]==1){
            st.insert(dfs(i,0));
        }
    }
    set<int>al;
    f1(n){
        if(lb[i]==1||lb[i]==0||al.count(lb[i]))continue;
        int ret = dfs(i,0);
        al.insert(lb[i]);
        if(!st.count(ret))return 0;
    }
    return 1;
}
int dfs1(int now,int pre){
    int cnt = 1;
    for(auto i:g[now]){
        if(i == pre)continue;
        s[now].pb(dfs1(i,now));
    }
    for(auto i:s[now]){
        cnt += i;
    }
    s[now].pb(n-cnt);
    sort(s[now].begin(),s[now].end());
    return cnt;
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    f(n-1){
        int add1,add2;
        cin >> add1 >> add2;
        g[add1].pb(add2);
        g[add2].pb(add1);
    }
    dfs1(1,0);
    int ans = -1;
    f1(n){
        if(s[i].size()>1&&s[i][0]==s[i].back()){
            if(check(i)){
                ans = max((int)g[i].size(),ans);
            }
        }
    }
    cout << ans << endl;
}


Output:
1
2
3
4
5
6
Line 23: error: bits/stdc++.h: No such file or directory
cc1plus: warnings being treated as errors
Line 13: warning: converting to 'int' from 'double'
In function 'int dfs(int, int)':
Line 23: error: a function-definition is not allowed here before ':' token
compilation terminated due to -Wfatal-errors.


Create a new paste based on this one


Comments: