Language: C++

#include"bits/stdc++.h"	// include
using namespace std;	// 名前空間
/* typedef */
typedef long long ll;	// long long
typedef long double ld;	// long double
typedef vector<int> vint; // intのvector
typedef vector<double> vdouble; // doubleのvector
typedef vector<ll> vll; // llのvector
typedef vector<ld> vld; // ldのvector
typedef vector<pair<ll, ll>> vl_l; // l_lのvector
typedef vector<pair<int, int>> vi_i; // i_iのvector
typedef vector<pair<double, double>> vd_d; // d_dのvector
typedef vector<string> vstring;	// stringのvector
typedef pair<ll, ll> l_l;	// ll同士のpair
typedef pair<int, int> i_i;	// int同士のpair
typedef pair<double, double> d_d;	// double同士のpair
/* define */
#define pb push_back	// push_back
#define all(v) v.begin(),v.end()	// コンテナ全体
#define PI (acos(-1))  // 円周率pi
#define rpt0(i, n) for(ll i = 0; i < (n); i++)  // リピート 0からn - 1まで
#define rpt1(i, n) for(ll i = 1; i <= (n); i++)  // リピート 1からnまで
#define rptb0(i ,n) for(ll i = (n) - 1; i >= 0; --i) // バックするリピート n - 1から0まで
#define rptb1(i ,n) for(ll i = (n); i >= 1; --i) // バックするリピート nから1まで
/* 入出力 read, write */
template <typename T>	// 1変数
void read(T& x) {
    cin >> x;
}
template <typename T, typename T0>	// 2変数
void read(T& x, T0& y) {
    cin >> x >> y;
}
template <typename T, typename T0, typename T1>	// 3変数
void read(T& x, T0& y, T1& z) {
    cin >> x >> y >> z;
}
template <typename T, typename T0, typename T1, typename T2>	// 4変数
void read(T& x, T0& y, T1& z, T2& w) {
    cin >> x >> y >> z >> w;
}
template <typename T>	// vector
void read(vector< T >& oneD, int n) {
    ll n1 = (ll)n;
    rpt0(i, n1)
    {
        ll x;
        read(x);
        oneD.push_back(x);
    }
}
template <typename T>
void read(vector< T >& oneD, ll n) {
    rpt0(i, n)
    {
        ll x;
        read(x);
        oneD.push_back(x);
    }
}
template <typename T>	// 配列
void read(T oneD[], int n) {
    ll n1 = (ll)n;
    rpt0(i, n1) {
        read(oneD[i]);
    }
}
template <typename T>
void read(T oneD[], ll n) {
    rpt0(i, n) {
        read(oneD[i]);
    }
}
template <typename T, typename T0>	// pair
void read(pair< T, T0 >& p) {
    cin >> p.first >> p.second;
}
template <typename T>	// 1変数
void write(T& x) {
    cout << x << endl;
}
template <typename T, typename T0>	// 2変数
void write(T& x, T0& y) {
    cout << x << " " << y << endl;
}
template <typename T, typename T0, typename T1>	// 3変数
void write(T& x, T0& y, T1& z) {
    cout << x << " " << y << " " << z << endl;
}
template <typename T, typename T0, typename T1, typename T2>	// 4変数
void write(T& x, T0& y, T1& z, T2& w) {
    cout << x << " " << y << " " << z << " " << w << endl;
}
template <typename T>	// vector
void write(vector< T >& oneD, int n) {
    ll n1 = (ll)n;
    rpt0(i, n1) {
        cout << oneD[i] << " ";
    }
    cout << endl;
}
template <typename T>
void write(vector< T >& oneD, ll n) {
    rpt0(i, n) {
        cout << oneD[i] << " ";
    }
    cout << endl;
}
template <typename T>	// 配列
void write(T oneD[], int n) {
    ll n1 = (ll)n;
    rpt0(i, n1) {
        write(oneD[i]);
    }
    cout << endl;
}
template <typename T>
void write(T oneD[], ll n) {
    rpt0(i, n) {
        write(oneD[i]);
    }
    cout << endl;
}
template <typename T, typename T0>	// pair
void write(pair< T, T0 >& p) {
    cout << p.first << " " << p.second << " ";
    cout << endl;
}

const ll maxn = 100000;
ll fm[maxn + 1][maxn + 1];
ll n;

bool qq(ll i, ll j) {
    if (fm[i][j] == 1) return true;
    rpt0(k, n) {
        bool b;
        if (fm[i][k] == 1) {
             b = qq(k, j);
        }
        if (b == true) return true;
    }
    return false;
}

int main(int argc, char const *argv[])
{
    ll m, k; read(n, m, k);
    memset(fm, 0, sizeof(fm));
    rpt0(i, m) {
        ll a, b; read(a, b);
        fm[a][b] = 1;
        fm[b][a] = 1;
    }
    ll bm[maxn + 1][maxn + 1];
    memset(bm, 0, sizeof(bm));
    rpt0(i, m) {
        ll c, d; read(c, d);
        bm[c][d] = 1;
        bm[c][d] = 1;
    }
    rpt1(i, n - 1) {
        ll ans = 0;
        for (ll j = i + 1; j <= n; j++) {
            int flag = 0;
            if (fm[i][j] || bm[i][j]) flag = 1;
            else {
                if (!qq(i, j)) flag = 1; 
            }
            if (flag == 0) ans++;
        }
        cout << ans << " ";
    }

    return 0;
}


Compiler output:
/tmp/ccvYjDXJ.o: in function `qq(long long, long long)':
a.cc:(.text+0xa5): relocation truncated to fit: R_X86_64_PC32 against symbol `n' defined in .bss section in /tmp/ccvYjDXJ.o
/tmp/ccvYjDXJ.o: in function `main':
a.cc:(.text+0xf4): relocation truncated to fit: R_X86_64_PC32 against symbol `n' defined in .bss section in /tmp/ccvYjDXJ.o
a.cc:(.text+0x38f): relocation truncated to fit: R_X86_64_PC32 against symbol `n' defined in .bss section in /tmp/ccvYjDXJ.o
a.cc:(.text+0x3d0): relocation truncated to fit: R_X86_64_PC32 against symbol `n' defined in .bss section in /tmp/ccvYjDXJ.o
collect2: error: ld returned 1 exit status