Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //DSA09018 - LIỆT KÊ ĐỈNH TRỤ
- #include <bits/stdc++.h>
- using namespace std;
- int n,m;
- vector<int> adj[1001];
- bool visited[1001];
- void init(){
- for(int i = 0; i <= 1001; i++){
- adj[i].clear();
- }
- cin >> n >> m;
- for(int i = 0; i < m; i++){
- int x, y; cin >> x >> y;
- adj[x].push_back(y);
- adj[y].push_back(x);
- }
- }
- void dfs(int u){
- visited[u] = true;
- for(int v : adj[u]){
- if(!visited[v]){
- dfs(v);
- }
- }
- }
- void DinhTru(){
- int tplt = 0;
- memset(visited, false, sizeof(visited));
- for(int i = 1; i <= n; i++){
- if(!visited[i]){
- tplt++;
- dfs(i);
- }
- }
- for(int i = 1; i <= n; i++){
- memset(visited, false, sizeof(visited));
- visited[i] = true;
- int dem = 0;
- for(int j = 1; j<=n; j++){
- if(!visited[j]){
- dem++;
- dfs(j);
- }
- }
- if(dem>tplt){
- cout << i << " ";
- }
- }
- }
- int main(){
- int t; cin >> t;
- while(t--){
- init();
- DinhTru();
- cout << endl;
- }
- }
- //DSA09013 - LIỆT KÊ CẠNH CẦU
- #include<iostream>
- #include<vector>
- #include<algorithm>
- #include<cstring>
- using namespace std;
- bool chuaxet[1005];
- vector<int> k[1005];
- vector< pair<int, int> > s;
- vector< pair<int, int> > ans;
- int v, e, res;
- void dfs(int u) {
- chuaxet[u] = true;
- for (int i = 0; i < k[u].size(); i++) {
- int h = k[u][i];
- if (chuaxet[h] == false) {
- dfs(h);
- }
- }
- }
- void reset() {
- for (int i = 0; i < 1005; i++)
- k[i].clear();
- memset(chuaxet, false, 1005);
- }
- int tplt() {
- int dem = 0;
- for (int i = 1; i <= v; i++) {
- if (chuaxet[i] == false) {
- dem++;
- dfs(i);
- }
- }
- return dem;
- }
- void canhcau(int canh) {
- int dem = 0;
- for (int i = 0; i < s.size(); i++) {
- if (i != canh) {
- k[s[i].first].push_back(s[i].second);
- k[s[i].second].push_back(s[i].first);
- }
- }
- dem = tplt();
- if (dem > res) {
- if (s[canh].first < s[canh].second) ans.push_back({ s[canh].first,s[canh].second });
- else ans.push_back({ s[canh].second,s[canh].first });
- }
- }
- int main() {
- int t;
- cin >> t;
- while (t--) {
- cin >> v >> e;
- reset();
- s.clear();
- ans.clear();
- int start, end;
- for (int i = 0; i < e; i++) {
- cin >> start >> end;
- s.push_back({ start,end });
- k[start].push_back(end);
- k[end].push_back(start);
- }
- res = tplt();
- for (int i = 0; i < s.size(); i++) {
- reset();
- canhcau(i);
- }
- for (int i = 0; i < ans.size(); i++) {
- cout << ans[i].first << " " << ans[i].second << " ";
- }
- cout << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement