Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define MAXN 101
- int n , m ;
- int visited [MAXN] ;
- int parent [MAXN] ;
- set <int> different_parents ;
- vector <int> adj_list [MAXN] ;
- bool is_present [MAXN] ;
- void dfs (int x , int *c)
- {
- *c += 1 ;
- visited[x] = 1 ;
- for (int i = 0 ; i < adj_list[x].size() ; i++)
- {
- int v = adj_list[x][i] ;
- if(visited[v] == -1)
- {
- visited[v] = visited[x] ;
- dfs(v , c) ;
- }
- }
- }
- void dfs_print (int x)
- {
- cout << x << " " ;
- visited[x] = 1 ;
- for (int i = 0 ; i < adj_list[x].size() ; i++)
- {
- int v = adj_list[x][i] ;
- if(visited[v] == -1)
- {
- visited[v] = visited[x] ;
- dfs_print(v) ;
- }
- }
- }
- int Find (int i)
- {
- return parent[i] == i ? i : parent[i] = Find(parent[i]) ;
- }
- void Union (int x , int y)
- {
- int xParent = Find(x) ;
- int yParent = Find(y) ;
- parent[xParent] = yParent ;
- }
- void initialize ()
- {
- for (int i = 1 ; i <= m ; i++)
- {
- visited[i] = -1 ;
- parent[i] = i ;
- }
- }
- void sort_adj_list ()
- {
- for (int i = 1 ; i <= m ; i++)
- {
- sort (adj_list[i].begin() , adj_list[i].end()) ;
- }
- }
- bool search_galaxy (int num)
- {
- for (int i = 1 ; i <= m ; i++)
- {
- for (int j = 0 ; j < adj_list[i].size() ; j++)
- {
- if (adj_list[i][j] == num)
- {
- return false ;
- }
- }
- }
- return true ;
- }
- int main ()
- {
- int a , b , v = 1 , u = INT_MIN , c = 0 ;
- cin >> n >> m ;
- initialize() ;
- for (int i = 1 ; i <= m ; i++)
- {
- parent[i] = i ;
- is_present[i] = false ;
- }
- for (int i = 1 ; i <= n ; i++)
- {
- cin >> a >> b ;
- adj_list[a].push_back(b) ;
- adj_list[b].push_back(a) ;
- Union (a , b) ;
- is_present[a] = true ;
- is_present[b] = true ;
- }
- for (int i = 1 ; i <= m ; i++)
- {
- if (is_present[i])
- {
- different_parents.insert(Find(i)) ;
- }
- }
- cout << different_parents.size() << endl ;
- sort_adj_list ();
- for (int i = 1 ; i <= m ; i++)
- {
- initialize();
- c = 0 ;
- dfs(i , &c);
- if (c > u)
- {
- u = c ;
- v = i ;
- }
- }
- initialize();
- dfs_print(v);
- cout << endl ;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement