Advertisement
anhkiet2507

DinhTru-CanhCau

Jun 6th, 2022
1,293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.82 KB | None | 0 0
  1. //DSA09018 - LIỆT KÊ ĐỈNH TRỤ
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5. int n,m;
  6. vector<int> adj[1001];
  7. bool visited[1001];
  8. void init(){
  9.     for(int i = 0; i <= 1001; i++){
  10.         adj[i].clear();
  11.     }
  12.     cin >> n >> m;
  13.     for(int i = 0; i < m; i++){
  14.         int x, y; cin >> x >> y;
  15.         adj[x].push_back(y);
  16.         adj[y].push_back(x);
  17.     }
  18. }
  19. void dfs(int u){
  20.     visited[u] = true;
  21.     for(int v : adj[u]){
  22.         if(!visited[v]){
  23.             dfs(v);
  24.         }
  25.     }
  26. }
  27. void DinhTru(){
  28.     int tplt = 0;
  29.     memset(visited, false, sizeof(visited));
  30.     for(int i = 1; i <= n; i++){
  31.         if(!visited[i]){
  32.             tplt++;
  33.             dfs(i);
  34.         }
  35.     }
  36.     for(int i = 1; i <= n; i++){
  37.         memset(visited, false, sizeof(visited));
  38.         visited[i] = true;
  39.         int dem = 0;
  40.         for(int j = 1; j<=n; j++){
  41.             if(!visited[j]){
  42.                 dem++;
  43.                 dfs(j);
  44.             }
  45.         }
  46.         if(dem>tplt){
  47.             cout << i << " ";
  48.         }
  49.     }
  50. }
  51. int main(){
  52.     int t; cin >> t;
  53.     while(t--){
  54.         init();
  55.         DinhTru();
  56.         cout << endl;
  57.     }
  58. }
  59.  
  60.  
  61.  
  62. //DSA09013 - LIỆT KÊ CẠNH CẦU
  63. #include<iostream>
  64. #include<vector>
  65. #include<algorithm>
  66. #include<cstring>
  67. using namespace std;
  68. bool chuaxet[1005];
  69. vector<int> k[1005];
  70. vector< pair<int, int> > s;
  71. vector< pair<int, int> > ans;
  72. int v, e, res;
  73. void dfs(int u) {
  74.     chuaxet[u] = true;
  75.     for (int i = 0; i < k[u].size(); i++) {
  76.         int h = k[u][i];
  77.         if (chuaxet[h] == false) {
  78.             dfs(h);
  79.         }
  80.     }
  81. }
  82. void reset() {
  83.     for (int i = 0; i < 1005; i++)
  84.         k[i].clear();
  85.     memset(chuaxet, false, 1005);
  86. }
  87. int tplt() {
  88.     int dem = 0;
  89.     for (int i = 1; i <= v; i++) {
  90.         if (chuaxet[i] == false) {
  91.             dem++;
  92.             dfs(i);
  93.         }
  94.     }
  95.     return dem;
  96. }
  97. void canhcau(int canh) {
  98.     int dem = 0;
  99.     for (int i = 0; i < s.size(); i++) {
  100.         if (i != canh) {
  101.             k[s[i].first].push_back(s[i].second);
  102.             k[s[i].second].push_back(s[i].first);
  103.         }
  104.     }
  105.     dem = tplt();
  106.     if (dem > res) {
  107.         if (s[canh].first < s[canh].second) ans.push_back({ s[canh].first,s[canh].second });
  108.         else ans.push_back({ s[canh].second,s[canh].first });
  109.     }
  110. }
  111. int main() {
  112.     int t;
  113.     cin >> t;
  114.     while (t--) {
  115.         cin >> v >> e;
  116.         reset();
  117.         s.clear();
  118.         ans.clear();
  119.         int start, end;
  120.         for (int i = 0; i < e; i++) {
  121.             cin >> start >> end;
  122.             s.push_back({ start,end });
  123.             k[start].push_back(end);
  124.             k[end].push_back(start);
  125.         }
  126.         res = tplt();
  127.         for (int i = 0; i < s.size(); i++) {
  128.             reset();
  129.             canhcau(i);
  130.         }
  131.         for (int i = 0; i < ans.size(); i++) {
  132.             cout << ans[i].first << " " << ans[i].second << " ";
  133.         }
  134.         cout << endl;
  135.     }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement