1339. Babies

Time limit: 1.0 second
Memory limit: 64 MB
O tempora! O mores!
Present-day babies progress quickly. There are exactly k boys and k girls in the kindergarten. Some boys like some girls. But in this age the boys are still knights, so, if some boy like some girl then he likes the only girl and moreover one and the same girl can’t be liked by more than one boy. And the girls in this age are true ladies. So, if a girl likes a boy she likes the only one, and different girls like different boys.
The children are ingenuous. Their secret amorousness is well-known to the nurse. Once the group decided to go for a walk and the nurse made up her mind to fall the children in pairs so that if there is a boy or a girl in love in a pair then the boy likes his pair-mate or the girl likes the boy. Help the nurse to arrange the described pairs. You may assume that either the boys or the girls enumerated with positive integers from 1 to k.

Input

The first line contains the integer k — the number of boys (1 ≤ k ≤ 250 000). The second line consists of the numbers of girls that are liked by boys: if the i'th boy likes some girls, her number is at the i'th position; if the i'th boy likes nobody, there is 0 at the i'th position. The numbers are separated with a space. The third line consists of the analogous information about the girls.

Output

You should output the sequence of k integers. The i'th element of the sequence is the number of a girl that is a pair-mate of the i'th boy. The numbers are separated with a space.

Sample

input output
3
3 0 0
0 2 0
3 2 1
Problem Author: Magaz Asanov
Problem Source: USU Championship 2004
Difficulty: 966 
 
题意:有n个男孩女孩,每个男孩只有至多一个喜欢的女孩,每个女孩只有至多一个喜欢的男孩。男孩喜欢的女孩互不相同,女孩喜欢的男孩互不相同。
求一个配对方案使得每一对人要么至少其中一个人喜欢对方,或两个人都没有喜欢的人。
分析:
发现这是一个每个点都只有一个出度、入度的图。
如果是环的话就随便连就好,题目保证不会有奇怪的情况。
如果不是环,就从没有人喜欢的那个人开始连。
注意奇链。
这又是ural上难度虚高的题目。
 /**
Create By yzx - stupidboy
*/
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <iostream>
#include <algorithm>
#include <map>
#include <set>
#include <ctime>
#include <iomanip>
using namespace std;
typedef long long LL;
typedef double DB;
#define For(i, s, t) for(int i = (s); i <= (t); i++)
#define Ford(i, s, t) for(int i = (s); i >= (t); i--)
#define Rep(i, t) for(int i = (0); i < (t); i++)
#define Repn(i, t) for(int i = ((t)-1); i >= (0); i--)
#define rep(i, x, t) for(int i = (x); i < (t); i++)
#define MIT (2147483647)
#define INF (1000000001)
#define MLL (1000000000000000001LL)
#define sz(x) ((int) (x).size())
#define clr(x, y) memset(x, y, sizeof(x))
#define puf push_front
#define pub push_back
#define pof pop_front
#define pob pop_back
#define ft first
#define sd second
#define mk make_pair
inline void SetIO(string Name)
{
string Input = Name+".in",
Output = Name+".out";
freopen(Input.c_str(), "r", stdin),
freopen(Output.c_str(), "w", stdout);
} inline int Getint()
{
int Ret = ;
char Ch = ' ';
bool Flag = ;
while(!(Ch >= '' && Ch <= ''))
{
if(Ch == '-') Flag ^= ;
Ch = getchar();
}
while(Ch >= '' && Ch <= '')
{
Ret = Ret * + Ch - '';
Ch = getchar();
}
return Flag ? -Ret : Ret;
} const int N = ;
int n, Boy[N], Girl[N];
int Fa[N * ], Next[N * ];
int Ans[N * ]; inline void Input()
{
scanf("%d", &n);
For(i, , n) scanf("%d", &Boy[i]);
For(i, , n) scanf("%d", &Girl[i]);
} inline void Solve()
{
For(i, , n)
{
if(Boy[i])
{
Next[i] = Boy[i] + n;
Fa[Boy[i] + n] = i;
}
if(Girl[i])
{
Next[i + n] = Girl[i];
Fa[Girl[i]] = i + n;
}
} For(i, , * n)
if(!Fa[i])
{
int x = i;
while(Next[x] && !Ans[x])
{
Ans[x] = Next[x];
Ans[Next[x]] = x;
x = Next[x];
x = Next[x];
}
} For(i, , * n)
if(!Ans[i])
{
int x = i;
while(Next[x] && !Ans[x] && !Ans[Next[x]])
{
Ans[x] = Next[x];
Ans[Next[x]] = x;
x = Next[x];
x = Next[x];
}
} int x = n + ;
For(i, , n)
if(!Ans[i])
{
while(Ans[x]) x++;
Ans[i] = x;
Ans[x] = i;
} For(i, , n - ) printf("%d ", Ans[i] - n);
printf("%d\n", Ans[n] - n);
} int main()
{
#ifndef ONLINE_JUDGE
SetIO("B");
#endif
Input();
Solve();
return ;
}

ural 1339. Babies的更多相关文章

  1. 后缀数组 POJ 3974 Palindrome && URAL 1297 Palindrome

    题目链接 题意:求给定的字符串的最长回文子串 分析:做法是构造一个新的字符串是原字符串+反转后的原字符串(这样方便求两边回文的后缀的最长前缀),即newS = S + '$' + revS,枚举回文串 ...

  2. ural 2071. Juice Cocktails

    2071. Juice Cocktails Time limit: 1.0 secondMemory limit: 64 MB Once n Denchiks come to the bar and ...

  3. ural 2073. Log Files

    2073. Log Files Time limit: 1.0 secondMemory limit: 64 MB Nikolay has decided to become the best pro ...

  4. ural 2070. Interesting Numbers

    2070. Interesting Numbers Time limit: 2.0 secondMemory limit: 64 MB Nikolay and Asya investigate int ...

  5. ural 2069. Hard Rock

    2069. Hard Rock Time limit: 1.0 secondMemory limit: 64 MB Ilya is a frontman of the most famous rock ...

  6. ural 2068. Game of Nuts

    2068. Game of Nuts Time limit: 1.0 secondMemory limit: 64 MB The war for Westeros is still in proces ...

  7. ural 2067. Friends and Berries

    2067. Friends and Berries Time limit: 2.0 secondMemory limit: 64 MB There is a group of n children. ...

  8. ural 2066. Simple Expression

    2066. Simple Expression Time limit: 1.0 secondMemory limit: 64 MB You probably know that Alex is a v ...

  9. ural 2065. Different Sums

    2065. Different Sums Time limit: 1.0 secondMemory limit: 64 MB Alex is a very serious mathematician ...

随机推荐

  1. SQLServer触发器

    触发器的作用: 自动化操作,减少了手动操作以及出错的几率. 触发器是一种特殊类型的存储过程,它不同于前面介绍过的一般的存储过程. [在SQL内部把触发器看做是存储过程但是不能传递参数] 一般的存储过程 ...

  2. Pyqt QDockWidget 停靠窗体

    网上的一个关于QDockWidget 停靠窗体的教程 代码: # -*- coding: utf-8 -*- from PyQt4.QtGui import * from PyQt4.QtCore i ...

  3. Ajax 的 GET 和 POST 模式

    Ajax 异步请求数据的方式有两种:GET 和 POST. 如果是 GET 模式,则直接将数据放置到异步请求的 URL 地址中,而 send() 方法不发送任何数据: var queryString ...

  4. flume-ng 集群搭脚本

    #!/bin/bash # author: xirong # date : -- ##### 搭建 flume 集群的脚本 # 注意: # . 需要 jdk7 环境,如果没有 Java 环境,请配置 ...

  5. PHPCMS V9 点击量排行调用方法

    首先调用的标签代码如下: {pc:content action=”sitehits” siteid=”4″ num=”10″ order=”views DESC” cache=”3600″} {loo ...

  6. hdu 3236 二维背包

    明天来一发 hdu 4501  算是这题的简化版吧

  7. APP交互

    交互设计基本功!5个值得学习的APP交互方式http://www.uisdc.com/5-interactive-design-worth-learning 移动App交互设计10大趋势–你用到了吗? ...

  8. loj 1038(dp求期望)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25915 题意:求一个数不断地除以他的因子,直到变成1的时候 除的次 ...

  9. Activity活动

    自定义一个类继承Activity类后结构已经很好了 提供了finish()来销毁活动 要记得注册

  10. Spark Streaming容错的改进和零数据丢失

    本文来自Spark Streaming项目带头人 Tathagata Das的博客文章,他现在就职于Databricks公司.过去曾在UC Berkeley的AMPLab实验室进行大数据和Spark  ...