#include <bits/stdc++.h>
#define ll long long int
#define endl '\n'
#define vn vector<ll>
using namespace std;
const int MAX_N = 1e9 + 7;
#define pii pair<ll,ll>
const ll INF = 0x3f3f3f3f3f3f3f3f;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    ll n, m;
    cin >> n >> m;            // N towns, M junctions
    vn weights(m + 1, 0);     // 1) Allocates array of length (m+1), all zero
    ll junc = 0;
    // 2) Read (n + m - 1) edges
    for (int i = 0; i < n + m - 1; i++) {
        ll u, v;
        cin >> u >> v;
        // If both endpoints > n, increment 'junc'
        // (apparently counting edges that connect junctions?)
        if (u > n && v > n) {
            junc++;
        } 
        else {
            // Take the bigger endpoint and increment weights[temp]
            ll temp = max(u, v);
            weights[temp] += 1;
        }
    }
    // 3) Some loop over i=1..m
    for (int i = 1; i <= m; i++) {
        // Attempt to set:
        //   weights[i] = max(2LL, weights[i-1] * weights[i-2]);
        //
        // But notice that for i=1, i-2 = -1 => out of bounds!
        // Also i-1=0 => that is valid, but i-2=-1 is not.
        weights[i] = max(2LL, weights[i-1] * weights[i-2]);
    }
    // 4) Multiply all weights[i] into 'ans'
    ll ans = 1;
    for (int i = 1; i <= m; i++) {
        ans *= weights[i];
    }
    // Print 'ans 1'
    cout << ans << " " << 1 << endl;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |