poj1703Find them, Catch them(并查集以及路徑壓縮)

 1 /*
 2    題目大意:有兩個不同的黑幫,開始的時候不清楚每個人是屬于哪個的!
 3   執行兩個操作
 4   A a, b回答a, b兩個人是否在同一幫派,或者不確定
 5   D a, b表示a, b兩個人不在同一個幫派
 6 
 7   思路:利用并查集將相同幫派的人合并到一起!
 8            a ,b 不在同一個城市,那么 a, 和mark[b]就在同一個城市,
 9            b 和 mark[a]就在同一個城市!
10 */
11 #include<iostream>
12 #include<cstring>
13 #include<cstdio>
14 #define M 100005
15 using namespace std; 
16 int f[M];
17 int mark[M];//mark[i]表示 i 與 mark[i]不在同一個黑幫 
18 int rank[M];//為不同的集合的父親節點記錄其孩子機節點個數,在合并集合的時候,將
19 int n, m;   //rank 值小的集合連接到 rank 值大的集合上去! 這樣在路徑壓縮的時候省去不少時間 
20 
21 void init(){
22     
23    memset(mark, 0, sizeof(int)*(n+1));
24    memset(rank, 0, sizeof(int)*(n+1));
25    for(int i=1; i<=n; ++i)
26       f[i]=i;
27 }
28 
29 int getFather(int x){
30    return x==f[x] ? x : f[x]=getFather(f[x]); 
31 }
32 
33 void Union(int a, int b){
34    int fa=getFather(a), fb=getFather(b);
35    if(fa!=fb){
36       if(rank[fa]>rank[fb]){ 
37          f[fb]=fa;
38          rank[fa]+=rank[fb]+1;
39       }
40       else{
41          f[fa]=fb;
42          rank[fb]+=rank[fa]+1;
43       }
44    }
45 } 
46 
47 int main(){
48    int t;
49    char cmd[3];
50    scanf("%d", &t);
51    while(t--){
52       scanf("%d%d", &n, &m);
53       init();
54       while(m--){
55          int u, v;
56          scanf("%s%d%d", cmd, &u, &v);
57          if(cmd[0]=='A'){
58               int fu=getFather(u), fv=getFather(v);
59              if(fu==fv)
60                 printf("In the same gang.\n");
61              else if(fu==getFather(mark[v]))
62                 printf("In different gangs.\n"); 
63              else
64                 printf("Not sure yet.\n");
65          }
66          else{
67             if(!mark[u] && !mark[v]){
68                mark[u]=v;
69                mark[v]=u;
70             } 
71             else if(!mark[u]){
72                mark[u]=v;
73                Union(u, mark[v]);
74             }
75             else if(!mark[v]){
76                mark[v]=u;
77                Union(v, mark[u]);
78             }
79             else {
80                Union(u, mark[v]);
81                Union(v, mark[u]);
82             }
83          }
84       }
85    } 
86    return 0;
87 } 

?

?

轉載于:https://www.cnblogs.com/hujunzheng/p/3892571.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531801.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531801.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531801.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機課程word教學,Word教學方法及使用技巧

Word教學方法及使用技巧來源:用戶上傳作者: 李志愛【摘 要】Word是一款實用的、簡單的具有編輯、排版、處理各種表格與圖片等功能的文字處理軟件。本文就教學中會采用的一些Word的教學方法進行了簡單的介紹與分析&#xff0c;并以泰山版初中計算機的教學計劃為例&#xff0c;重…

poj2186Popular Cows(Kosaraju算法--有向圖的強連通分量的分解)

1 /*2 題目大意&#xff1a;有N個cows, M個關系3 a->b 表示 a認為b popular&#xff1b;如果還有b->c, 那么就會有a->c 4 問最終有多少個cows被其他所有cows認為是popular&#xff01;5 6 思路&#xff1a;強連通分量中每兩個節點都是可達的&#xff…

yum刪除mysql數據庫_MySQL數據庫之Centos中徹底刪除Mysql(rpm、yum安裝的情況)

本文主要向大家介紹了MySQL數據庫之Centos中徹底刪除Mysql(rpm、yum安裝的情況) &#xff0c;通過具體的內容向大家展現&#xff0c;希望對大家學習MySQL數據庫有所幫助。我用的centos6&#xff0c;mysql讓我整出了各種問題&#xff0c;我想重裝一個全新的mysql&#xff0c;yum…

計算機視覺領域常見期刊和會議,計算機視覺領域常見期刊和會議

會議&#xff1a;ICCV&#xff1a; IEEE International Conference on Computer Vision(每兩年舉辦一次&#xff0c;由IEEE主辦&#xff0c;百度百科&#xff1a;https://baike.baidu.com/item/iccv/7054436?fraladdin&#xff0c;ICCV 2017&#xff1a;http://iccv2017.thecv…

mysql怎么新增_mysql怎么新增用戶

匿名用戶1級2018-01-27 回答展開全部首先以root身份登錄到MySQL服務器中。$ mysql -u root -p當驗證提示出現的時候&#xff0c;輸入MySQL的root帳號的密碼。創建一個MySQL用戶使用如下命令創建一個用戶名和密碼分別為"myuser"和"mypassword"的用戶。mysql…

江西財經大學計算機排名2019,2019年全國商科院校評價報告出爐 江西財經大學排名第七...

中國江西網/江西頭條新聞客戶端訊 記者鄭周贇報道&#xff1a;6月5日&#xff0c;江西財經大學應用統計研究中心發布了2019年全國商科院校評價報告&#xff0c;江西財經大學在46所指標數據完整的商科院校中綜合得分排名第七。該報告權衡了指標的完備性和可獲得性&#xff0c;確…

Uvaoj10054 - The Necklace

1 /*2 題意&#xff1a;打印歐拉回路&#xff01;3 思路&#xff1a;開始時不明白&#xff0c;dfs為什么是后序遍歷&#xff1f; 4 因為歐拉回路本身是一條回路&#xff0c;那么我們在dfs時&#xff0c;可能存在提前找到回路&#xff0c;這條回路可能不是歐拉回路&…

w7計算機應用放大按鍵,Win7窗口最大化和最小化快捷鍵是什么

Win7窗口最大化和最小化快捷鍵是什么Win7有很多快捷鍵&#xff0c;你都知道多少呢&#xff1f;今天小編給大家科普的是win7窗口最大化和最小化快捷鍵&#xff0c;下面就一起來了解看看吧&#xff01;Windows 鍵 方向鍵“↑”使當前使用的窗口最大化。Windows 鍵 方向鍵“↓”…

s7-1200跟mysql_讓西門子S7-1200直接連接MySQL數據庫!!!

最近項目上有個需求&#xff0c;要把采集的數據存儲到數據庫中&#xff0c;當前西門子有很多方法&#xff0c;必讀IDB&#xff0c;還有通過WINCC的腳本&#xff0c;第三方的軟件等等&#xff0c;但是隨著發展&#xff0c;有些需求希望設備直接到數據庫&#xff0c;比如云端的RD…

uva oj 567 - Risk(Floyd算法)

1 /*2 一張有20個頂點的圖上。3 依次輸入每個點與哪些點直接相連。4 并且多次詢問兩點間&#xff0c;最短需要經過幾條路才能從一點到達另一點。5 6 bfs 水過7 */8 #include<iostream>9 #include<cstring> 10 #include<vector> 11 #include<cstdio> 12…

10034 - Freckles 克魯斯克爾最小生成樹!~

1 /*2 10034 - Freckles3 克魯斯克爾最小生成樹&#xff01;&#xff5e; 4 */5 #include<iostream>6 #include<cstdio>7 #include<cmath>8 #include<algorithm>9 using namespace std; 10 11 struct node{ 12 double x, y; 13 }; 14 15 struct t…

win7個人計算機的ip地址,win7計算機ip地址查詢_win7本機ip地址查詢

2016-12-09 11:40:21查找計算機的ip地址的方法&#xff1a;點擊你的電腦桌面左下角的“開始”找到“運行”點擊運行, 在出現的對話框里面輸入“cmd” 點擊確定然后就會出現一個黑色的命令行窗口,你會看到“&...2016-12-19 15:59:44手機設置靜態IP 1、點設置-線網絡 2、WLAN…

最全的mysql 5.7.13_最全的mysql 5.7.13 安裝配置方法圖文教程(linux) 強烈推薦!

linux環境Mysql 5.7.13安裝教程分享給大家&#xff0c;供大家參考&#xff0c;具體內容如下1系統約定安裝文件下載目錄&#xff1a;/data/softwareMysql目錄安裝位置&#xff1a;/usr/local/mysql數據庫保存位置&#xff1a;/data/mysql日志保存位置&#xff1a;/data/log/mysq…

iis 日志 post數據_云原生日志的趨勢(1):logscape和logiq

作為日志產品的PM&#xff0c;跟進國內外日志產品動向是個長期工作。這幾天翻新一些歷史記錄&#xff0c;發現logscape自2017年開源以來&#xff0c;突然2019年10月又更新了一會。于是順著翻翻logscape的github賬號&#xff0c;起了興致來寫點文字。https://github.com/logscap…

Uvaoj 10048 - Audiophobia(Floyd算法變形)

1 /*2 題目大意&#xff1a;3 從一個點到達另一個點有多條路徑&#xff0c;求這多條路經中最大噪音值的最小值&#xff01; 、4 5 思路&#xff1a;最多有100個點&#xff0c;然后又是多次查詢&#xff0c;想都不用想&#xff0c;Floyd算法走起&#xff01; 6 …

南通大學計算機系本二,2012年南通大學計算機科學與技術學院江蘇省內第二批本科(院校代碼:1301)...

第二批本科(院校代碼&#xff1a;1301)序號專 業 名 稱學制科類計劃數1漢語言文學(師范)四文科552漢語言文學(高級文秘)四文科803廣播電視新聞學四文科304對外漢語四文科285歷史學(師范)四文科306思想政治教育(師范)四文科207社會工作四文科258行政管理四文科459公共事業管理四…

大學計算機基礎總結,大學計算機基礎第二章總結

數&#xff1a;計算機的數據的基本形態是二進制數數制&#xff1a;可以直接進行數學計算數字碼制&#xff1a;用來表示不同對象屬性● 數制(計數體制)多位數中每一位的構成方法以及實現從低位到高位的進位規則(也叫做進制)▲ 常用數制&#xff1a;R進制有R個數碼&#xff0c;數…

UvaOJ10369 - Arctic Network

1 /*2 The first line of each test case contains 1 < S < 100, the number of satellite channels!3 注意&#xff1a;S表示一共有多少個衛星&#xff0c;那么就是有 最多有S-1個通道&#xff01; 然后將最小生成樹中的后邊的 S-1通道去掉就行了&#xff01; 4…

獲取list泛型_泛型

泛型什么是泛型&#xff1f;為什么使用泛型&#xff1f;泛型的出現意味著編寫的代碼可以被不同類型的對象所重用&#xff0c;提升了代碼的重用性。泛型的本質是參數化類型&#xff0c;即將所需操作的數據類型設置為一個參數。 舉個實際中的栗子&#xff1a;我們需要設計一個柜子…

w10計算機字體怎么設置在哪里設置,如何設置修改win10系統電腦的顯示字體

如何設置修改win10系統電腦的顯示字體騰訊視頻/愛奇藝/優酷/外賣 充值4折起今天給大家介紹一下如何設置修改win10系統電腦的顯示字體的具體操作步驟。1. 首先鼠標左鍵開始&#xff0c;然后在菜單下的左下角選擇設置圖標。2. 進入Windows 設置后&#xff0c;單擊個性化。3. 接著…