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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

浙大JAVA实验题12_2019浙大计算机考研机试模拟赛(2)——概念专题

發布時間:2023/12/2 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浙大JAVA实验题12_2019浙大计算机考研机试模拟赛(2)——概念专题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接? ?引用自晴神OJ

A - 邊覆蓋

B - 極大獨立集

C - 穩定婚姻問題

D - 笛卡爾樹

沒趕得上全程的比賽,就做了兩道,后面兩道以后有時間再補。兩道都是概念題,比較基礎~ 以下是題解

A -?邊覆蓋

Case Time Limit:?200?MS (Others) /?400?MS (Java) ??????Case Memory Limit:?256?MB (Others) /?512?MB (Java)

Accepted:

199??????Total Submission:

362

Problem Description

對一個給定的無向圖G(V,E),邊集E'是E的子集。如果V中的所有頂點都在E'中出現過,那么稱邊集E'是圖G的一個邊覆蓋(Edge Cover)。

(以上定義引自https://en.wikipedia.org/wiki/Edge_cover)

根據上面的定義,請判斷一些給定的邊集是否是給定的無向圖的邊覆蓋。

Input

每個輸入文件一組數據。

第一行為兩個整數N、M(1<=N<=500, 1<=M<=N*(N-1)/2),分別表示無向圖的頂點數和邊數。假設圖上的頂點編號為從1到N。

接下來M行,每行兩個正整數u、v(1<=u,v<=N, u!=v),分別表示一條無向邊的兩個端點。數據保證沒有重邊。

接著一個正整數K(K<=10),表示查詢的個數。

然后是K個查詢,每個查詢第一行為一個正整數L(L<=M),表示欲查詢邊集E'中的邊數;接下來L行,每行兩個整數,表示邊集E'中的一條邊。數據保證E'一定是E的子集。

Output

每個查詢一行,如果欲查詢邊集E'不是圖G的邊覆蓋,那么輸出No;否則輸出Yes。

Sample Input

6 7

1 2

1 3

2 3

2 4

3 5

4 5

4 6

3

3

1 2

3 5

4 6

4

1 2

2 3

4 5

4 6

3

1 2

2 3

4 6

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

Sample Output

Yes

Yes

No

Author

Shoutmon

Source

19浙大考研機試模擬賽

分析:題目是中文題,意思是輸入一堆邊,看這些邊是否將所有頂點都覆蓋到了。只需要在每次查詢輸入后,將邊所連的頂點置為已訪問,再遍歷一次訪問數組即可。

#include #include#include#include#include#include#include

using namespacestd;const int maxn=510;intG[maxn][maxn];boolvis[maxn];intmain()

{//freopen("1.txt","r",stdin);

intn,m;

cin>>n>>m;intu,v;for(int i=0;i

scanf("%d%d",&u,&v);

G[u][v]=1;

G[v][u]=1;

}intk;

cin>>k;while(k--){intL;

scanf("%d",&L);

memset(vis,0,sizeof(vis));for(int i=0;i

scanf("%d%d",&u,&v);

vis[u]=true;

vis[v]=true;

}intj;for(j=1;j<=n;j++){if(vis[j]==false){

printf("No\n");break;

}

}if(j==n+1) printf("Yes\n");

}return 0;

}

View Code

B -?極大獨立集

Case Time Limit:?100?MS (Others) /?200?MS (Java) ??????Case Memory Limit:?256?MB (Others) /?512?MB (Java)

Accepted:

140??????Total Submission:

303

Problem Description

對一個給定的無向圖G(V,E),點集V'是V的子集。如果V'中的任意兩個頂點之間都沒有邊,就稱點集V'是圖G的獨立集(Independent Set)。在此基礎上,如果往V'中添加任何一個在V中但不在V'中的頂點,都會使V'變成非獨立集,那么就稱V'是圖G的極大獨立集(Maximal Independent Set)。

(以上定義引自https://en.wikipedia.org/wiki/Independent_set_(graph_theory))

根據上面的定義,請判斷一些給定的點集是否是給定的無向圖的極大獨立集。

Input

每個輸入文件一組數據。

第一行為兩個整數N、M(1<=N<=500, 1<=M<=N*(N-1)/2),分別表示無向圖的頂點數和邊數。假設圖上的頂點編號為從1到N。

接下來M行,每行兩個正整數u、v(1<=u,v<=N, u!=v),分別表示一條無向邊的兩個端點。數據保證沒有重邊。

接著一個正整數K(K<=10),表示查詢的個數。

然后是K個查詢,每個查詢第一行為一個正整數L(L<=N),表示欲查詢點集V'的頂點個數;第二行為用空格隔開的L個正整數,表示V'中的頂點編號。數據保證V'一定是V的子集。

Output

每個查詢一行,如果欲查詢的點集不是圖G的獨立集,那么輸出Not an Independent Set;如果欲查詢的點集是圖G的獨立集但不是極大獨立集,那么輸出Not Maximal;如果欲查詢的點集是圖G的極大獨立集,輸出Yes。

Sample Input

6 5

1 2

2 3

2 4

4 5

4 6

3

2

1 4

3

1 3 4

3

1 2 4

Sample Output

Not Maximal

Yes

Not an Independent Set

Author

Shoutmon

Source

19浙大考研機試模擬賽

分析:判斷是否是極大獨立集,根據定義一個獨立集是指任意兩個頂點之間都沒有邊的點集,所謂最大就是加入任意一個頂點都會“破壞”獨立集。先判斷是否是獨立集,然后再枚舉每一個未在點集中的點,判斷是否在加入后會“破壞”獨立集。注意到樣例中已經給出了坑點,即1和4僅是獨立集不是最大獨立集,因為加入3后仍然是一個獨立集,知道這點以后就可以輕松解決了。

#include #include#include#include#include#include#include

using namespacestd;const int maxn=510;int G[maxn][maxn]={0};boolvis[maxn];intmain()

{//freopen("1.txt","r",stdin);

intn,m;

cin>>n>>m;intu,v;for(int i=0;i

scanf("%d%d",&u,&v);

G[u][v]=G[v][u]=1;

}intK;

scanf("%d",&K);

loop:while(K--){intL;

scanf("%d",&L);

vectorvec;inttemp;

memset(vis,0,sizeof(vis));for(int i=0;i

scanf("%d",&temp);

vec.push_back(temp);

vis[temp]=true;

}for(int i=0;i

cout<

}

}

}bool flag=false;for(int i=1;i<=n;i++){if(vis[i]==false){intj;for(j=0;j

}

}if(j==vec.size()){

cout<

flag=true;gotoloop;

}

}

}if(!flag) cout<

}return 0;

}

View Code

總結

以上是生活随笔為你收集整理的浙大JAVA实验题12_2019浙大计算机考研机试模拟赛(2)——概念专题的全部內容,希望文章能夠幫你解決所遇到的問題。

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