248972026-02-16 16:30:16abcdSportos nyaraláscpp17Elfogadva 40/40194ms13108 KiB
#include <bits/stdc++.h>
using namespace std;
using pii=pair<int,int>;

const int maxn=50001;
int n,m,k;

void dfs(int v,int c,vector<int>& vis,vector<int>& comp,vector<vector<int>>& adj){
    comp[v]=c;
    vis[v]=1;
    for(int i:adj[v])if(!vis[i])dfs(i,c,vis,comp,adj);
}

int main(){
    cin>>n>>m>>k;
    vector<vector<int>> adj1(n+1);
    vector<vector<int>> adj2(n+1);
    for(int i=0;i<m;i++){
        int a,b;cin>>a>>b;
        adj1[a].push_back(b);
        adj1[b].push_back(a);
    }
    for(int i=0;i<k;i++){
        int a,b;cin>>a>>b;
        adj2[a].push_back(b);
        adj2[b].push_back(a);
    }
    int c=0;
    vector<int> vis1(n+1);
    vector<int> comp1(n+1);
    for(int i=1;i<=n;i++){
        if(!vis1[i]){
            dfs(i,c++,vis1,comp1,adj1);
        }
    }
    c=0;
    vector<int> vis2(n+1);
    vector<int> comp2(n+1);
    for(int i=1;i<=n;i++){
        if(!vis2[i]){
            dfs(i,c++,vis2,comp2,adj2);
        }
    }
    map<pii,vector<int>> hm;
    for(int i=1;i<=n;i++){
        hm[{comp1[i],comp2[i]}].push_back(i);
    }
    vector<int> ans(n+1);
    for(auto [a,b]:hm){
        int s=b.size()-1;
        for(int x:b)ans[x]=s;
    }
    for(int i=1;i<=n;i++)cout<<ans[i]<<' ';
    cout<<'\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms508 KiB
2Elfogadva0/0143ms13108 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Elfogadva1/11ms404 KiB
8Elfogadva1/11ms316 KiB
9Elfogadva1/11ms500 KiB
10Elfogadva1/13ms316 KiB
11Elfogadva2/23ms564 KiB
12Elfogadva2/24ms564 KiB
13Elfogadva2/216ms1056 KiB
14Elfogadva2/212ms804 KiB
15Elfogadva2/257ms6972 KiB
16Elfogadva2/275ms9056 KiB
17Elfogadva3/3100ms11308 KiB
18Elfogadva3/396ms11344 KiB
19Elfogadva2/286ms6708 KiB
20Elfogadva2/2115ms9012 KiB
21Elfogadva2/2136ms10288 KiB
22Elfogadva2/2120ms11180 KiB
23Elfogadva3/3171ms11784 KiB
24Elfogadva3/3194ms13076 KiB