Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define fi first
- #define se second
- #define pb push_back
- #define pf push_front
- #define popb pop_back
- #define popf pop_front
- #define ins insert
- #define pq priority_queue
- #define minele min_element
- #define maxele max_element
- #define mp make_pair
- #define lb lower_bound //first pos >= val
- #define ub upper_bound // first pos > val
- #define cnt_bit __builtin_popcount
- #define all(x) x.begin(), x.end()
- #define debug(...) " [" << #__VA_ARGS__ ": " << (__VA_ARGS__) << "] "
- //#pragma GCC optimize("Ofast")
- //#pragma GCC target("avx,avx2,fma")
- using namespace std;
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- typedef long long ll;
- typedef unsigned long long ull;
- typedef pair<ll, ll> pll;
- typedef pair<int, int> pii;
- int d4x[4] = {1, 0, -1, 0}; int d4y[4] = {0, 1, 0, -1};
- int d8x[8] = {0, 1, 1, 1, 0, -1, -1, -1};
- int d8y[8] = {1, 1, 0, -1, -1, -1, 0, 1};
- const ll oo = 1e18;
- const ll maxN = 1e6;
- /* Author : Le Ngoc Bao Anh, 11A5, LQD High School for Gifted Student */
- const int N = 4e5 + 10;
- vector<int> g[N];
- int dp[N];
- bool in[N], out[N];
- void solve() {
- int t; cin >> t;
- int n; cin >> n;
- for(int i = 1; i <= n; i++) {
- int sz; cin >> sz;
- g[i].resize(sz);
- for(auto &u : g[i]) cin >> u;
- }
- for(int i = 1; i <= n; i++) sort(all(g[i]));
- int cnt = 0;
- auto add = [&](int u, int v) -> void {
- ++cnt;
- dp[u]++; dp[v]++;
- in[u] = true;
- out[v] = true;
- };
- if(t == 1) {
- for(int i = 1; i <= n; i++) {
- for(auto v : g[i]) {
- auto iter = lower_bound(all(g[v]), i);
- if(iter == g[v].end()) {
- add(i, v);
- } else {
- if((*iter) != i) add(i, v);
- }
- }
- }
- for(int i = 1; i <= n; i++) {
- if(dp[i] == cnt) {
- cout << i;
- return;
- }
- }
- } else {
- for(int i = 1; i <= n; i++) {
- for(auto v : g[i]) {
- auto iter = lower_bound(all(g[v]), i);
- if(iter == g[v].end()) {
- add(i, v);
- } else {
- if((*iter) != i) add(i, v);
- }
- }
- }
- pii ans = make_pair(0, 0);
- for(int i = 1; i <= n; i++) {
- if(!in[i] || !out[i]) continue;
- if(dp[i] > dp[ans.fi]) {
- ans.se = ans.fi;
- ans.fi = i;
- } else {
- if(dp[i] > dp[ans.se]) ans.se = i;
- }
- }
- if(ans.fi > ans.se) swap(ans.fi, ans.se);
- cout << ans.fi << " " << ans.se;
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #else
- //online
- #endif
- int tc = 1, ddd = 0;
- // cin >> tc;
- while(tc--) {
- //ddd++;
- //cout << "Case #" << ddd << ": ";
- solve();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement