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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

F - 娜娜梦游仙境系列——多民族王国

發(fā)布時間:2024/6/18 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 F - 娜娜梦游仙境系列——多民族王国 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

F?-?娜娜夢游仙境系列——多民族王國

Time Limit:?2000/1000MS (Java/Others)????Memory Limit:?128000/64000KB (Java/Others) Submit?Status

Problem Description

娜娜好不容易才回憶起自己是娜娜而不是什么Alice,也回憶起了自己要繼續(xù)探索這個世界的目標(biāo),便偷偷溜出皇宮。娜娜發(fā)現(xiàn)這個王國有很多個民族組成,每個民族都有自己的方言,更要命的是這些方面差別還很遠(yuǎn),這就導(dǎo)致這個王國的人民交流十分困難。娜娜仔細(xì)觀察并記錄了好久,發(fā)現(xiàn)總共有m種不同的語言。

?

突然娜娜發(fā)現(xiàn)前面有一群天才在討論問題,但是奈何語言問題,導(dǎo)致這群人交流非常吃力。不過幸虧的是,這群天才都有一個特殊的能力,只要消耗一個單位的能量即可完全領(lǐng)悟一門新的語言(媽媽再也不用擔(dān)心我的四六級托福雅思GRE!)。于是娜娜久違的的好奇心又開始冒泡了,娜娜希望你告訴她,如果知道了每個人會的語言,是否能讓這群天才兩兩直接或者間接的交流呢?所謂間接得交流是指經(jīng)過若干個人的翻譯使兩個人得到相互表達的信息。如果不能,至少需要多少能量才能實現(xiàn)呢?

Input

多組數(shù)據(jù),首先是一個正整數(shù)t(t<=20)

對于每組數(shù)據(jù),首先是兩個整數(shù)n,m(2<=n<=100,1<=m<=100),分別代表人數(shù)以及語言的種類數(shù),語言的編號從1~m。

接下來是n行,每行對這個人進行描述

首先是一個整數(shù)k,表示這個人已經(jīng)會k門語言,接下來是k個整數(shù),分別是這個人掌握的語言編號。(0<=k<=m)

Output

對于每組數(shù)據(jù),輸出一個整數(shù),表示使得這群人能夠互相直接或者間接交流所需要的最少能量。

Sample Input

2 2 2 1 2 0 5 5 1 2 2 2 3 2 3 4 2 4 5 1 5

Sample Output

1 0

Hint

樣例1中其中第一個人會第二種語言,而第二個人不會任何語言,所以只需要第二個人也學(xué)會第二種語言即可交流,所以能量數(shù)為1

樣例2中有5個人,而且這5個人已經(jīng)可以相互直接或間接進行交流: 1-2-3-4-5,正好構(gòu)成一條鏈。因此不需要繼續(xù)學(xué)習(xí)新的語言,能量數(shù)為0。

?

題意:

輸入N和M表示有多少個人和語言的種類,然后再輸入每一個人所掌握的語言,并查集的題目,由于數(shù)據(jù)量比較小,所有采用了用二維數(shù)組來保持關(guān)系,

?A_B[i][j]表示編號i的人對于語言j是否掌握,1表示掌握,2表示不掌握。通過關(guān)系,構(gòu)建并查集來連接判斷能夠構(gòu)成多少條邊,判斷邊數(shù)來判斷答案、

1 #include <iostream> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 using namespace std; 6 int uset[3333],num[3333],parper[3333]; 7 int A_B[110][110]; 8 int Find(int x) 9 { 10 int p=x,t; 11 while(uset[p]!= p) 12 p=uset[p]; 13 while(x!=p) 14 {t=uset[x];uset[x]=p;x=t;} 15 return x; 16 } 17 int main() 18 { 19 int T,n,m,k,i,j,l,get,A,B,Begin; 20 int Num[110],Max; 21 scanf("%d",&T); 22 while(T--) 23 { 24 memset(A_B,0,sizeof(A_B)); 25 scanf("%d %d",&n,&m); 26 { 27 for(i=0;i<n;i++)uset[i]=i; 28 for(i=0;i<m;i++)Num[i]=0; 29 for(i=0;i<n;i++) 30 { 31 scanf("%d",&k); 32 parper[i]=i;uset[i]=i;num[i]=1; 33 for(j=0;j<k;j++) 34 { 35 scanf("%d",&get); 36 A_B[i][get-1]=1; /*記錄關(guān)系*/ 37 } 38 } 39 for(j=0,Max=0,Begin=0;j<m;j++) 40 { 41 for(i=0;i<n;i++) 42 { 43 if(A_B[i][j]==1) /*查找第一個人所掌握的語言*/ 44 { 45 Num[j]++; 46 if(Max<Num[j])Max=Num[j]; 47 for(l=i+1;l<n;l++) 48 { 49 if(A_B[l][j]==1) /*查找第其他人所掌握同樣的語言*/ 50 { 51 A=Find(i); 52 B=Find(l); 53 if(A!=B) /*判斷是否產(chǎn)生新的邊*/ 54 { 55 Begin++; /*新的邊,則邊數(shù)加1*/ 56 uset[A]=B; /*判斷是否產(chǎn)生新的邊*/ 57 } 58 } 59 } 60 break; 61 } 62 } 63 } 64 if(Begin==0)printf("%d\n",n-Max); 65 else if(Begin>=n-1)printf("0\n"); 66 else printf("%d\n",n-1-Begin); 67 } 68 } 69 return 0; 70 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/Wurq/p/4430149.html

總結(jié)

以上是生活随笔為你收集整理的F - 娜娜梦游仙境系列——多民族王国的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。