12142022-03-25 19:51:44Szin AttilaPletykacpp14Hibás válasz 27/100153ms56824 KiB
#include <bits/stdc++.h>
using namespace std;
#define InTheNameOfGod ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);
using ll = long long;

const ll maxN = 2e5 + 5;
const ll MOD = 1e9 + 7;


int main() {
    /*freopen("../input.txt", "r", stdin);
    freopen("../output.txt", "w", stdout);*/
   InTheNameOfGod;
    
    ll n,m,k;
    cin >> n >> m >> k;

    vector<vector<ll> > g(n+1), tav(n+1, vector<ll>(2, -1));
    vector<ll> a(k);

    for(ll &i : a) cin >> i;

    for(ll i = 0; i < m; i++) {
        ll x,y;
        cin >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }

    vector<vector<ll> > pref(2*n+1, vector<ll>(2, 0));
    queue<pair<ll, ll >> sor;

    for(ll i = 0; i < k; i++) {
        if(!g[a[i]].empty()) {
            tav[a[i]][0] = 1;
            pref[1][0]++;
            sor.push({a[i], 0});
        }
        else {
            pref[1][0]++;
            //pref[3][0]--;
            //cout << "empty: " << a[i] << endl;
        }
    }

    while(!sor.empty()) {
        pair<ll, ll> cur = sor.front();
        sor.pop();

        //cout << cur.first << ", " << cur.second << ": " << tav[cur.first][cur.second] << endl;

        for(ll sz : g[cur.first]) {
            if(tav[sz][1-cur.second] != -1) continue;
            tav[sz][1-cur.second] = tav[cur.first][cur.second] + 1;
            pref[tav[sz][1-cur.second]][1-cur.second]++;
            sor.push({sz, 1-cur.second});
        }
    }

    /*for(ll i = 1; i < 7; i++) cout << pref[i][0] << ' ';
    cout << endl;
    for(ll i = 1; i < 7; i++) cout << pref[i][1] << ' ';
    cout << endl;*/

    vector<ll> mo(2*n+1, 0);
    ll maxi = -1, ind = -1;
    for(ll i = 1; i < pref.size(); i++) { 
        mo[i] = pref[i][1-i%2];

        if(i > 2) mo[i] += mo[i-2];

        if(mo[i] > maxi) {
            maxi = mo[i];
            ind = i;
        }
    }

    cout << maxi << "\n" << ind << "\n";
    for(ll i = 1; i <= ind; i++) cout << mo[i] << ' ';
    cout << "\n";

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base27/100
1Elfogadva0/02ms1852 KiB
2Hibás válasz0/032ms16308 KiB
3Elfogadva2/21ms2288 KiB
4Részben helyes1/22ms2640 KiB
5Hibás válasz0/23ms3148 KiB
6Hibás válasz0/24ms4632 KiB
7Elfogadva4/44ms4696 KiB
8Hibás válasz0/49ms7028 KiB
9Elfogadva4/48ms7124 KiB
10Elfogadva4/48ms7232 KiB
11Hibás válasz0/434ms17064 KiB
12Elfogadva4/429ms17396 KiB
13Részben helyes2/454ms27388 KiB
14Hibás válasz0/457ms27952 KiB
15Hibás válasz0/693ms37952 KiB
16Elfogadva6/696ms38752 KiB
17Időlimit túllépés0/6123ms49244 KiB
18Időlimit túllépés0/6143ms50344 KiB
19Időlimit túllépés0/6120ms56160 KiB
20Időlimit túllépés0/6131ms56824 KiB
21Időlimit túllépés0/6126ms56820 KiB
22Időlimit túllépés0/6149ms32660 KiB
23Időlimit túllépés0/6140ms32792 KiB
24Időlimit túllépés0/6153ms32728 KiB