總時間限制:
1000ms
單個測試點時間限制:
100ms
記憶體限制:
65536kb
描述 有一群旅行愛好者,有一天,他們帶回了n只蝴蝶回來。他們相信每乙隻都屬於兩個不同種類中的一種,為了討論方便,我們稱它們為a與b。他們想把n只標本分成兩組——一些屬於a且一些屬於b——但是直接標記任何乙個標本對於他們是非常困難,因此他們決定採用下面的方法。
對每對標本i和j,他們細心地把它們放到一起研究。如果他們以自己的判斷足以確信,那麼他們把這對蝴蝶標記為「相同」(這意味著他們相信這兩隻來自同一類)或者是「不同」(這意味著他們相信這兩隻來自不同的類)。他們也可以對某些標本判斷不出來而棄權,在這種情況下,我們稱這對標本是不明確的。
現在他們有n只標本的集合,還有對那些沒有棄權的標本對的m個判斷的集合(「相同」或者「不同」)。他們想知道這個資料與每只蝴蝶來自a和b中的乙個類的想法是否一致。更具體地說,如果對每對蝴蝶按照下述方式標記a或b是可能的,即對每個標為「相同」的(i,j)對,就是i與j有相同標記的情況;對每個標為「不同」的(i,j)對,就是i與j有不同標記的情況。那麼我們可以說這m個判斷是一致的。他們正在冥思苦想自己的判斷是否是一致的。請你幫他們設計合理的演算法解決該問題。
輸入輸入包含多組資料,以檔案結束符為終止。
每組資料第一行為兩個整數,分別是n和m:
n為蝴蝶的數量,編號從0到n-1
m為關係的數量
接下來是m組關係資料,每組資料佔一行,為三個整數,前兩個整數表示蝴蝶的編號,第三個整數為關係的種類(相同或者不同):
0為相同,1為不同
1 < n <= 1000
1 < m <= 100000
輸出合理就輸出yes
不合理就輸出no
樣例輸入
3 30 1 0
1 2 1
0 2 1
3 30 1 0
1 2 1
0 2 0
樣例輸出
yesno
提示注意輸出的大寫和回車
可以使用bfs與並查集。
注意bfs使用時,壓入佇列的數值要標為已訪問,否則會導致節點多次壓入佇列,造成ttl。另外,輸入結束符為eof,否則會re。
#include #include #include #include #include using namespace std;
int relation[1005][1005];
bool visited[1005];
bool type[1005];
int main()
//還有未訪問的點時訪問
int visnum = 0;
queueq;
while(visnum != n)
break;
case 1:
if(!visited[j])
break;}}
}}
bool flag = true;
for(int i = 0; i < n; i++)}}
}if(flag)
printf("yes\n");
else
printf("no\n");
}return 0;
}
第二次上機
題目 1 已知乙個矩陣,儲存在乙個二維陣列中。將矩陣中和值為最大的那一行 元素與首行對換。利用陣列進行操作 include include using namespace std intmain 乙個4 4的矩陣 cout 請輸入 vector int s n 儲存和 int m 和值最大的行 fo...
第二次c 上機
檔名稱 求三個整數中的最大數 作 者 範俊濤 完成日期 2016 年3 月10 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 任意輸入三個整數 問題描述 略 程式輸出 最大的整數 問題分析 略 演算法設計 多個if else語句應用 初步了解了多個if else 語句的使用法,中間...
第二次上機實驗
檔名稱 ex1 2.cpp 作 者 莫洋 完成日期 2016 年 3 月 14 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 運用函式 程式輸出 略 問題分析 略 演算法設計 略 include includeint ispalindrome int int reve...