248972026-02-16 16:30:16abcdSportos nyaraláscpp17Accepted 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';
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/01ms508 KiB
2Accepted0/0143ms13108 KiB
3Accepted1/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted1/11ms316 KiB
6Accepted1/11ms316 KiB
7Accepted1/11ms404 KiB
8Accepted1/11ms316 KiB
9Accepted1/11ms500 KiB
10Accepted1/13ms316 KiB
11Accepted2/23ms564 KiB
12Accepted2/24ms564 KiB
13Accepted2/216ms1056 KiB
14Accepted2/212ms804 KiB
15Accepted2/257ms6972 KiB
16Accepted2/275ms9056 KiB
17Accepted3/3100ms11308 KiB
18Accepted3/396ms11344 KiB
19Accepted2/286ms6708 KiB
20Accepted2/2115ms9012 KiB
21Accepted2/2136ms10288 KiB
22Accepted2/2120ms11180 KiB
23Accepted3/3171ms11784 KiB
24Accepted3/3194ms13076 KiB