Foreign Exchange

Your non-profit organization (iCORE - international Confederation of Revolver Enthusiasts) coordinates a very successful foreign student exchange program. Over the last few years, demand has sky-rocketed and now you need assistance with your task.

The program your organization runs works as follows: All candidates are asked for their original location and the location they would like to go to. The program works out only if every student has a suitable exchange partner. In other words, if a student wants to go from A to B, there must be another student who wants to go from B to A. This was an easy task when there were only about 50 candidates, however now there are up to 500000 candidates!

Input

The input file contains multiple cases. Each test case will consist of a line containing n - the number of candidates (1≤n≤500000), followed by n lines representing the exchange information for each candidate. Each of these lines will contain 2 integers, separated by a single space, representing the candidate's original location and the candidate's target location respectively. Locations will be represented by nonnegative integer numbers. You may assume that no candidate will have his or her original location being the same as his or her target location as this would fall into the domestic exchange program. The input is terminated by a case where n = 0; this case should not be processed.

Output

For each test case, print "YES" on a single line if there is a way for the exchange program to work out, otherwise print "NO".

Sample Input 

10

1 2

2 1

3 4

4 3

100 200

200 100

57 2

2 57

1 2

2 1

10

1 2

3 4

5 6

7 8

9 10

11 12

13 14

15 16

17 18

19 20

0

 Sample Output 

YES

NO

用map写,写了一大截才发现不可以用map的,因为 map不可以存储相同的键值,这是用map写了一半的代码

#include <cstdio>
#include <iostream>
#include <map>
using namespace std; map<int,int> students;
map<int,int>::iterator t, pos1, pos2; int main()
{
int T;
while(scanf("%d",&T) == ){
if(T == )break;
int a,b; for(int i = ; i < T; i++){
scanf("%d%d",&a,&b);
students[a]=b;
} int n = students.size(), i = ; for(t = students.begin(); i < n; t++, i++){ cout<<"begin-----------------------"<<endl;
if((*t).second == )continue; if(students[(*t).second] == NULL){
cout<<(*t).second<<" "<<students[(*t).second]<<endl;
cout<<"NO"<<endl;
break;
} else{ a = students[(*t).second];
cout<<a<<" ++ "<<students[a]<<" -- "<<(*t).first<<endl; if(a == (*t).first){
//cout<<"111 "<<(*t).second<<endl; pos1 = students.find((*t).second);
pos2 = students.find((*t).first);
(*pos1).second = ;
(*pos2).second = ; //cout<<"222 "<<(*t).first<<endl;
}
} } if(students.empty())cout<<"YES"<<endl; }
//system("pause");
return ;
}

用vector做即可

#include <cstdio>
#include <iostream>
#include <vector>
using namespace std; vector<int>student1;
vector<int>student2; int main()
{
int T;
while(scanf("%d",&T) == ){
if(T == )break; student1.clear();
student2.clear(); int a,b; for(int i = ;i < T; i++){
cin>>a>>b;
student1.push_back(a);
student2.push_back(b);
} for(int i = ;i < T; i++){ if(student1[i] == )continue; for(int j = i+;j <T; j++){ if(student2[j] == )continue; if(student1[i] == student2[j]){ if(student2[i] == student1[j])student1[i] = student1[j] = student2[i] = student2[j] = ;
else{
student2[j] = student2[i];
student1[i] = student2[i] = ;
}
}
}
} int k = ; for(int i = ;i < T; i++){
if(student1[i] != &&student2[i] != ){
k = ;
break;
}
} if(k)cout<<"YES"<<endl;
else cout<<"NO"<<endl; }
//system("pause");
return ;
}

uva 10763 Foreign Exchange <"map" ,vector>的更多相关文章

  1. UVA 10763 Foreign Exchange 出国交换 pair+map

    题意:给出很多对数字,看看每一对(a,b)能不能找到对应的(b,a). 放在贪心这其实有点像检索. 用stl做,map+pair. 记录每一对出现的次数,然后遍历看看对应的那一对出现的次数有没有和自己 ...

  2. uva 10763 Foreign Exchange(排序比较)

    题目连接:10763 Foreign Exchange 题目大意:给出交换学生的原先国家和所去的国家,交换成功的条件是如果A国给B国一个学生,对应的B国也必须给A国一个学生,否则就是交换失败. 解题思 ...

  3. UVA 10763 Foreign Exchange

      Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu   Description Your non- ...

  4. UVa 10763 Foreign Exchange(map)

    Your non-profitorganization (iCORE - international Confederationof Revolver Enthusiasts) coordinates ...

  5. uva:10763 - Foreign Exchange(排序)

    题目:10763 - Foreign Exchange 题目大意:给出每一个同学想要的交换坐标 a, b 代表这位同学在位置a希望能和b位置的同学交换.要求每一位同学都能找到和他交换的交换生. 解题思 ...

  6. 【UVA】10763 Foreign Exchange(map)

    题目 题目     分析 没什么好说的,字符串拼接一下再放进map.其实可以直接开俩数组排序后对比一下,但是我还是想熟悉熟悉map用法. 呃400ms,有点慢.     代码 #include < ...

  7. Foreign Exchange

     10763 Foreign ExchangeYour non-profit organization (iCORE - international Confederation of Revolver ...

  8. UVA Foreign Exchange

    Foreign Exchange Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Your non ...

  9. Foreign Exchange(交换生换位置)

     Foreign Exchange Your non-profit organization (iCORE - international Confederation of Revolver Enth ...

随机推荐

  1. Effective C++ 第二版 5)new和delete形式 6) 析构函数里的delete

    内存管理 1)正确得到: 正确调用内存分配和释放程序; 2)有效使用: 写特定版本的内存分配和释放程序; C中用mallco分配的内存没有用free返回, 就会产生内存泄漏, C++中则是new和de ...

  2. Mysql学习(慕课学习笔记3)数据类型

    数据类型 数据类型是指.存储过程参数.表达式和局部变量的数据特征, 它决定了数据的存储格式,代表了不同的信息类型. 整型 Tinyint      有符号位 -128到127   无符号位 0到255 ...

  3. destoon实现底部添加你是第几位访问者的方法

    经常会看到一些网站有类似“您是第位访客”字样的计数统计,这里我们来实现把这个统计功能添加到destoon的底部,显示“你是第几问访问者”的效果.此处的计数器与网站流量统计有区别,记录的是刷新次数,并不 ...

  4. mvc上传,下载,浏览文件功能(用uploadify插件)

    类 public class UpLoadFileController : Controller { // // GET: /UpLoadFile/ public ActionResult Index ...

  5. 再谈Redirect(客户端重定向)和Dispatch(服务器端重定向)

    这是两个常常被放在一起进行比较的概念,今天对这两个概念再重新回顾一下,前者发生在客户端(浏览器),后者发生在服务器端,因此也有人把前者称为客户端重定向,把后者称为服务器端重定向,虽然对于后者这种称谓并 ...

  6. IOS 项目问题总结

    把自己项目中遇到的问题总结一下,供大家参考,希望大家多多提出意见!! 在Xcode 6.2中遇到Your build settings specify a provisioning profile w ...

  7. (2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度

    AWK内存泄露: 这几天本来就很郁闷,遇到搭建在hadoop平台上的hive平台有很多问题.写个好好的sql语句,总是说这个错误那个错误.然后,今天遇到一个更加郁闷的问题,居然分析淘宝数据的awk都运 ...

  8. 小SQL大作用

    从DBA那问来的,备份现有数据库表: create table B select * from A ; 删除,重建数据库主键 alter table book_order drop primary k ...

  9. Java开发工具与程序调试

    开发工具:MyEclipse,Eclipse等. 程序调试:  (1)断点:设置断点是程序调试中必不可少的手段,Java调试器每次遇到程序断点时都会将当前线程挂起,即暂停当前程序的运行.(在Eclip ...

  10. Android中读取assets文件夹中的子文件夹内容

    文件结构如下:assets/info/info AssetManager am = this.getResources().getAssets(); InputStream input = null; ...