HDU——2444 The Accomodation of Students

          The Accomodation of Students

              Time Limit: 5000/1000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
                    Total Submission(s): 7086????Accepted Submission(s): 3167


Problem Description
There are a group of students. Some of them may know each other, while others don't. For example, A and B know each other, B and C know each other. But this may not imply that A and C know each other.

Now you are given all pairs of students who know each other. Your task is to divide the students into two groups so that any two students in the same group don't know each other.If this goal can be achieved, then arrange them into double rooms. Remember, only paris appearing in the previous given set can live in the same room, which means only known students can live in the same room.

Calculate the maximum number of pairs that can be arranged into these double rooms.

?

Input
For each data set:
The first line gives two integers, n and m(1<n<=200), indicating there are n students and m pairs of students who know each other. The next m lines give such pairs.

Proceed to the end of file.

?

Output
If these students cannot be divided into two groups, print "No". Otherwise, print the maximum number of pairs that can be arranged in those rooms.

?

Sample Input
4 4 1 2 1 3 1 4 2 3 6 5 1 2 1 3 1 4 2 5 3 6

?

Sample Output
No 3

題目:一些學生之間是朋友關系(關系不能傳遞),現在要將一堆學生分成兩堆,使得在同一堆的學生之間沒有朋友關系。如果不可以輸出“No”,可以的話輸出最多可以分出幾對小盆友。

思路:

我們先二分圖染色,若能被染成兩部分的話說明可以被分成兩部分,然后再在我們分出的圖上面跑最大匹配。若不能被染成兩部分直接輸出no

代碼:

#include<queue>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 510
using namespace std;
bool flag,vis[N];
int n,m,x,y,tot,ans,col[N],girl[N],head[N],map[N][N];
queue<int>q;
struct Edge
{int from,to,next;
}edge[N*N];
int read()
{int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f;
}
int add(int x,int y)
{tot++;edge[tot].to=y;edge[tot].next=head[x];head[x]=tot;
}
int find(int x)
{for(int i=1;i<=n;i++){if(!vis[i]&&map[x][i]){vis[i]=true;if(girl[i]==-1||find(girl[i])){girl[i]=x; return 1;}}}return 0;
}
int color(int s)
{queue<int>q;q.push(s); col[s]=0;while(!q.empty()){int x=q.front();for(int i=head[x];i;i=edge[i].next){int t=edge[i].to;if(col[t]!=-1){if(col[t]==col[x]) {flag=true; return 1;}}else{col[t]=col[x]^1;q.push(t);}}q.pop();}return 0;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){ans=0;flag=false;tot=0;memset(map,0,sizeof(map));memset(col,-1,sizeof(col));memset(edge,0,sizeof(edge));memset(head,0,sizeof(head));for(int i=1;i<=m;i++){x=read(),y=read();map[x][y]=1;add(x,y),add(y,x);}for(int i=1;i<=n;i++)if(col[i]==-1){if(color(i)) break;} if(flag) {printf("No\n"); continue;}memset(girl,-1,sizeof(girl));for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));if(find(i)) ans++;}printf("%d\n",ans);}return 0;
}

?

轉載于:https://www.cnblogs.com/z360/p/7435411.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257643.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257643.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS開發系列--觸摸事件、手勢識別、搖晃事件、耳機線控

-- iOS事件全面解析 概覽 iPhone的成功很大一部分得益于它多點觸摸的強大功能&#xff0c;喬布斯讓人們認識到手機其實是可以不用按鍵和手寫筆直接操作的&#xff0c;這不愧為一項偉大的設計。今天我們就針對iOS的觸摸事件&#xff08;手勢操作&#xff09;、運動事件、遠程控制…

關于Hyper-V備份的四大注意事項

盡管Hyper-V備份相對簡單&#xff0c;但備份管理員仍需注意四大問題。這四方面的問題在創建備份時可能不太重要&#xff0c;但在備份恢復時影響甚大。 1、對于虛擬機來說不僅意味著虛擬磁盤 就目前來看&#xff0c;企業在執行Hyper-V備份時最常見的誤區就是把虛擬機當做物理服務…

python為什么忽然火了_為什么Python突然就火了起來了呢?

近日&#xff0c;TIOBE發布10月編程語言排行榜顯示&#xff0c;15年來TIOBE指數的前8名一直保持不變&#xff0c;而Python正在成為一種新的大型語言。越來越多的企業在使用Python進行開發&#xff0c;越來越多的人正在加入Python程序員行列!TIOBE 10月編程語言排行榜前20名Pyth…

SQL 2005 全文索引

全文索引技術是目前搜索引擎的關鍵技術。 試想在1M大小的文件中搜索一個詞&#xff0c;可能需要幾秒&#xff0c;在100M的文件中可能需要幾十秒&#xff0c;如果在更大的文件中搜索那么就需要更大的系統開銷&#xff0c;這樣的開銷是不現實的。 所以在這樣的矛盾下出現了全文索…

python重命名窗口_Python:即時重命名方法名稱

如果要繼續在已切換到使用屬性的對象上使用get_Field和set_Field(您只需訪問或分配給Field),則可以使用包裝器對象&#xff1a;class NoPropertyAdaptor(object):def __init__(self, obj):self.obj objdef __getattr__(self, name):if name.startswith("get_"):retu…

nginx優化之請求直接返回json數據

對于有些服務端接口返回是固定值的json&#xff0c;可通過配置nginx直接返回json&#xff0c;減少程序的加載對資源的占用&#xff0c;減少接口響應時間 location ~* (request/update)$ { default_type application/json; return 200 {"update":"no&quo…

ARP掃描工具arp-scan

2019獨角獸企業重金招聘Python工程師標準>>> ARP掃描工具arp-scan arp-scan是Kali Linux自帶的一款ARP掃描工具。該工具可以進行單一目標掃描&#xff0c;也可以進行批量掃描。批量掃描的時候&#xff0c;用戶可以通過CIDR、地址范圍或者列表文件的方式指定。該工具…

數據庫索引的作用和優點缺點

為什么要創建索引呢&#xff1f;這是因為&#xff0c;創建索引可以大大提高系統的性能。 第一&#xff0c;通過創建唯一性索引&#xff0c;可以保證數據庫表中每一行數據的唯一性。 第二&#xff0c;可以大大加快 數據的檢索速度&#xff0c;這也是創建索引的最主要的原因。 第…

elementui el-from 怎樣顯示圖片_vue2.0使用weui.js的uploader組件上傳圖片(兼容移動端)...

本文已同步到專業技術網站 www.sufaith.com, 該網站專注于前后端開發技術與經驗分享, 包含Web開發、Nodejs、Python、Linux、IT資訊等板塊.最近在使用 vue2.0開發微信公眾號網頁 其中涉及到 選擇圖片, 圖片的壓縮上傳, 預覽, 刪除等操作。項目整體UI框架使用的是 vux, 但可惜的…

面向對象分析

在需求獲取階段&#xff0c;開發人員關注于理解用戶以及他們的使用要求。而在需求分析階段&#xff0c;開發人員關注于理解系統需要構建的內容&#xff0c;其核心是產生一個準確的、完整的、一致的和可驗證的系統模型&#xff0c;稱為分析模型。 面對對象的分析模型由三個獨立的…

python字典輸入學生信息_如何用Python將XML中的所有信息輸入字典

我通常使用標準庫中的ElementTree模塊解析XML。它沒有給你一個字典&#xff0c;你得到了一個更有用的DOM結構&#xff0c;它允許你為孩子們遍歷每個元素。from xml.etree import ElementTree as ETxml ET.parse("root_element xml.getroot()for child in root_element:.…

HDU4267(2012年長春站)

這道題真的是好題&#xff0c;讓我對線段樹有了全新的認識&#xff0c;至少讓我真正感受到了線段樹的神奇。 題意是就是線段樹區間更新&#xff0c;單點詢問的問題&#xff0c;不過這個題好就好在它的區間更新的點并不連續&#xff01; adding c to each of Ai which satisfies…

ITFriend創業敗局(四):菜鳥CEO的自我修養

自創業自封CEO以來&#xff0c;短短3個月&#xff0c;又經歷了無數的磨練&#xff0c;快速成長中。創業不同于打工&#xff0c;他要求你必須有全局觀和綜合能力&#xff0c;技術、市場、商務&#xff0c;啥都得會&#xff0c;還要處理各種各樣的問題和矛盾。根據個人經歷&#…

51nod 1050 循環數組最大子段和

1050 循環數組最大子段和 N個整數組成的循環序列a[1],a[2],a[3],…,a[n]&#xff0c;求該序列如a[i]a[i1]…a[j]的連續的子段和的最大值&#xff08;循環序列是指n個數圍成一個圈&#xff0c;因此需要考慮a[n-1],a[n],a[1],a[2]這樣的序列&#xff09;。當所給的整數均為負數時…

mysql設置token有效期_記住我 token保存到數據庫

記住我 token保存到數據庫這里使用jpamysqlorg.springframework.bootspring-boot-starter-data-jpamysqlmysql-connector-javaspring.datasource.driver-class-namecom.mysql.cj.jdbc.Driverspring.datasource.urljdbc:mysql://127.0.0.1:3306/fly-demo?serverTimezoneUTC&…

Spark- Linux下安裝Spark

Spark- Linux下安裝Spark 前期部署 1.JDK安裝&#xff0c;配置PATH 可以參考之前配置hadoop等配置 2.下載spark-1.6.1-bin-hadoop2.6.tgz,并上傳到服務器解壓 [rootsrv01 ~]# tar -xvzf spark-1.6.1-hadoop2.6.tgz /usr/spark-1.6.1-hadoop2.6 3.在 /usr 下創建軟鏈接到目標文…

Linux Apache 怎么修改工作模式

Apache默認為prefork模式&#xff0c;主要是考慮到穩定性的原因。  要切換到worker模式&#xff0c;則需要登錄到linux上&#xff0c;進行如下操作&#xff1a;  進入/usr/sbin目錄  cd /usr/sbin  將當前的prefork模式啟動文件改名  mv httpd httpd.prefork  將wo…

python需要背的英語單詞怎么寫_學Python必須背的42個常見單詞,看看你都會嗎?...

這42個單詞是學習Python必須背會的單詞&#xff0c;也是代碼中常見的單詞。希望你能都背下來&#xff01;&#xff01;1. adult [?d?lt] 成年人2. authentication [???θent??ke??n] 身份驗證、認證、鑒定3. bit [b?t] 稍微、小量、小塊、一點4. byte [ba?t] …

viewDidLoad、viewWillAppear、viewWillDisappear

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil viewDidLoad viewWillAppear viewWillDisapppear《iOS編程》P137關于視圖的初始化代碼不能寫在視圖控制器的初始化&#xff08;1&#xff09;&#xff0c;原因如下&#xff1a;為…

asp.net mvc4開啟SqlServer 會話共享模式

2019獨角獸企業重金招聘Python工程師標準>>> 應用部署結構&#xff08;精簡&#xff09;: 站點部署在Nginx后面&#xff0c;以Nginx作為反向代理&#xff0c;不希望在Nginx上設置ip_hash&#xff0c;實現比較真實的負載均衡效果。 這時考慮到需要讓site1和site2同時…