對給定的無向圖g=(v,e),如果邊集e'滿足:(1)e'是e的子集;(2)e'中的任意兩條邊都沒有公共頂點,那麼稱邊集e'為圖g的乙個匹配(matching)。而如果往e'中增加任意一條在e中但不在e'中的邊,都會導致e'不再是圖g的匹配,那麼稱e'為圖g的乙個極大匹配(maximal matching)。
(以上定義引自
根據上面的定義,請判斷一些給定的邊集是否是給定的無向圖的極大匹配。
每個輸入檔案一組資料。
第一行兩個整數n、m(1<=n<=1000, 0<=m<=n*(n-1)/2),表示頂點數和邊數,假設所有頂點的編號為1到n。
接下來m行,每行兩個正整數u、v(1<=u,v<=n, u!=v),表示一條邊的兩個端點編號。
然後乙個正整數k(k<=10),表示查詢個數。
接下來為k個查詢,每個查詢第一行為乙個正整數l,表示待查詢邊集的邊數,接下來l行每行兩個正整數,表示一條邊的兩個端點編號。資料保證每個查詢中相同的邊只會出現一次,且所有邊都在圖中存在。
每個查詢輸出一行,如果給定的邊集是極大匹配,那麼輸出yes
;如果它是匹配但不是極大匹配,那麼輸出not maximal
;如果不是匹配,那麼輸出not a matching
。
4 4
1 21 3
2 32 441
2 31
1 32
1 22 4
21 3
2 4
yes
not maximal
not a matching
yes
yes not maximal not a matching yes
shoutmon
19浙大考研機試模擬賽
#include #includeusing namespace std;
vector< int> g[1001];
int n,m,k,num;
bool vis[1001]=;
struct node
;bool operator<( node x, node y)
); }
cin>>k;
for(int i=0;i>num;
int f=0,f2=0;
sete1;
for(int j=0;j>a>>b;
if(vis[a]==true||vis[b]==true)
f=1;
vis[a]=true;
vis[b]=true;
e1.insert();
}if(f==0)
if(sum==sum1)
cout<<"yes"
cout<<"not maximal"<}
else
cout<<"not a matching"<}
return 0;
}
10 4 訪客名單
編寫乙個while迴圈,提示使用者輸入其名字。使用者輸入其名字後,在螢幕上列印一句問候語,並將一條訪問記錄新增到檔案guest book.txt中。確保這個檔案中的每條記錄都獨佔一行。with open e guest book.txt w as f while true message input...
104 貨倉選址
把a 1 a n 排序,設貨倉建在 x 座標處,x 左側的商店有 p 家,右側的商店有 q 家。若 p q 則把貨倉的選址向右移動 1 單位距離,距離之和就會減小 q p。同理,若 p q 則貨倉的位置想左移動會使距離之和變小。當 p q 時為最優解。因此貨倉應該建在中位數處,即把 a 排序後,當 ...
10 4每日部落格
首先是將資料匯入到hive資料庫中,我使用的是以下的方法 將乙個csv或txt匯入hive 先修改格式為txt 第一行資料為列名,根據列名在hive建表 create table watermelon id string,color string,root string,stroke string,...