11982022-03-15 20:29:39k_balintPletykacpp14Időlimit túllépés 88/100127ms31892 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=100005;

int n,m,k;
vector<int> adj[c];
bool vis[c][2];
queue<pair<int,int>> q;
vector<int> ans;
int isolated=0;

void bfs(){
    while(!q.empty()){
        int v=q.front().first;
        int d=q.front().second;
        if(d==1 && adj[v].empty()) isolated++;
        if(d==ans.size()+1){
            ans.emplace_back(1);
            if(d>=3) ans.back()+=ans[d-3];
            if(d==3) ans.back()-=isolated;
        }
        else ans.back()++;
        q.pop();

        ++d;
        for(int x:adj[v]){
            if(!vis[x][d&1]){
                vis[x][d&1]=1;
                q.push(make_pair(x,d));
            }
        }
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    cin>>n>>m>>k;

    for(int i=1;i<=k;i++){
        int x; cin>>x;
        q.push(make_pair(x,1));
        vis[x][1]=1;
    }

    for(int i=1;i<=m;i++){
        int a,b; cin>>a>>b;
        adj[a].emplace_back(b);
        adj[b].emplace_back(a);
    }

    bfs();
    
    int maxi=0;
    for(int i=1;i<ans.size();i++){
        if(ans[maxi]<ans[i]) maxi=i;
    }

    cout << ans[maxi] << '\n' << maxi+1 << '\n';
    for(int i=0;i<=maxi;i++){
        cout << ans[i] << ' ';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base88/100
1Elfogadva0/04ms6660 KiB
2Elfogadva0/018ms9300 KiB
3Elfogadva2/23ms7016 KiB
4Elfogadva2/24ms7052 KiB
5Elfogadva2/24ms7236 KiB
6Elfogadva2/24ms7480 KiB
7Elfogadva4/44ms7536 KiB
8Elfogadva4/48ms8056 KiB
9Elfogadva4/47ms8132 KiB
10Elfogadva4/47ms8224 KiB
11Elfogadva4/419ms10112 KiB
12Elfogadva4/418ms10252 KiB
13Elfogadva4/427ms12324 KiB
14Elfogadva4/428ms13028 KiB
15Elfogadva6/643ms15404 KiB
16Elfogadva6/671ms16204 KiB
17Elfogadva6/659ms18568 KiB
18Elfogadva6/657ms19608 KiB
19Elfogadva6/657ms21224 KiB
20Elfogadva6/661ms22384 KiB
21Elfogadva6/664ms23540 KiB
22Elfogadva6/693ms24856 KiB
23Időlimit túllépés0/6127ms29556 KiB
24Időlimit túllépés0/6126ms31892 KiB