标签:hnu
Problem description |
Porto’s book club is buzzing with excitement for the annual book exchange event! Every year, members bring their favorite book and try to find another book they like that is owned by someone willing to trade with them. |
Input |
The first line has two integers: N, the number of people, and M, the total number of “declarations of interest”. Each of the following M lines has two integers, A and B, indicating that member A likes the book that member B brought (0<=A,B < N). Numbers
A and B will never be the same (a member never likes the book he brought). 2<=N<=10 000 |
Output |
You should output YES if we can find a new book for every club member and NO if that is not possible. |
Sample Input |
9 9 0 1 1 2 2 0 3 4 4 3 5 6 6 7 7 8 8 5 |
Sample Output |
YES |
Problem Source |
HNU Contest |
题意:
有n个人,m种需求,给出m行,每行a,b代表a想要的书在b那里,问能不能通过交换的方法来满足每个人的需求
#include <iostream> #include <stdio.h> #include <string.h> #include <stack> #include <queue> #include <map> #include <set> #include <vector> #include <math.h> #include <bitset> #include <algorithm> #include <climits> using namespace std; #define ls 2*i #define rs 2*i+1 #define UP(i,x,y) for(i=x;i<=y;i++) #define DOWN(i,x,y) for(i=x;i>=y;i--) #define MEM(a,x) memset(a,x,sizeof(a)) #define W(a) while(a) #define gcd(a,b) __gcd(a,b) #define LL long long #define N 20005 #define INF 0x3f3f3f3f #define EXP 1e-8 #define rank rank1 const int mod = 1000000007; int n,m,vis[N],tem[N]; vector<int> a[N]; int dfs(int u) { for(int i=0; i<a[u].size(); i++) { int v = a[u][i]; if(!vis[v]) { vis[v]=1; if(tem[v]==-1||dfs(tem[v])) { tem[v] = u; return 1; } } } return 0; } int main() { int i,j,k,x,y; while(~scanf("%d%d",&n,&m)) { for(i = 0; i<=n; i++) a[i].clear(); for(i = 0; i<m; i++) { scanf("%d%d",&x,&y); a[x].push_back(y); } MEM(tem,-1); for(i = 0; i<n; i++) { MEM(vis,0); dfs(i); } for(i = 0; i<n; i++) { if(tem[i]==-1) break; } if(i==n) printf("YES\n"); else printf("NO\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:hnu
原文地址:http://blog.csdn.net/libin56842/article/details/47403659