UVA 10763 Foreign Exchange

题意:n个学生要当交换生,每个学生想从A校换到B校,交换条件是找到一个想要从B换到A的学生配对,每个学生只能配对一次,问这些学生能不能都成功交换。

思路:这题挺简单的,首先是配对的问题,由于对于每个学生,A和B是不同的,因此可以把学生分成两组,一组是AB的,这样能配对的组合一定是第一组和第二组的两个学生,那么把这两个集合排序,然后依次看能否匹配即可。


代码:


#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define Inf 0x3FFFFFFFFFFFFFFFLL
#define eps 1e-9
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
const int maxn=500000+10;
struct Node
{
    int x,y;
    Node (){};
    Node (int xx,int yy){x=xx;y=yy;}
};
Node S[maxn],T[maxn];
bool cmp1(Node a,Node b)
{
    return (a.x==b.x&&a.y

你可能感兴趣的:(UVA 10763 Foreign Exchange)