日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zoj 1789 The Suspects

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zoj 1789 The Suspects 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

好高興,又AC一道 ,不過是很類似的兩道。。還是好高興呀思想跟2833是一樣的,不過要重新設計輸入和輸出。老師上課又重新講解了一下,因為嫌疑人已知是0,所以加入集中時應該默認讓數值小的做樹根,即最終讓零做樹根,這樣子,只改了一點點,最后只要直接輸出樹根為零的樹 的大小就可以了。。。。。。。。。。。。。只是改良了一點點,但思想非常重要。。下面的程序仍然還是沒有改的。。太懶了。。= =

?

// ////#include "stdafx.h" #include <stdio.h> #include <iostream> #include"memory.h" using namespace std; #define Maxsize 30000 int parent[Maxsize]; void WeightedUnion(int i, int j) {//基于權重對根合并,將結點少的合并到結點多的int temp = parent[i] + parent[j];if (parent[j] < parent[i])//i的結點比較少{parent[i] = j;//i 成為j的結點parent[j] = temp;//j 的結點等于 i+j }else//i的結點多于或等于j 的結點{parent[j] = i;parent[i] = temp;} } int findparent(int i) {while (parent[i] >= 0)//不為根{i = parent[i];}return i; } int main( ) {int n, m, k, x, y;while (scanf("%d%d", &n, &m) != EOF)//n人m個社團{if (n == 0 && m == 0) break;//結束memset(parent, -1, sizeof(parent));//將每個根置為-1while (m--){scanf("%d", &k);scanf("%d", &x);//先輸入一個成員if (k == 1)continue; //如果只有1成員,即沒有朋友,沒有合并的需要while (--k){scanf("%d", &y);x = findparent(x);//找到自己所在的根y = findparent(y);if (x != y)//不是同一個根,不為同一個group{WeightedUnion(x, y);}x = y;}}printf("%d\n", -parent[findparent(0)]);}return 0; }


1789

?

?

轉載于:https://www.cnblogs.com/grandj/p/3762394.html

總結

以上是生活随笔為你收集整理的zoj 1789 The Suspects的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。