Codeforces Round #279 (Div. 2) b

/**
 * @brief Codeforces Round #279 (Div. 2) b
 * @file b.cpp
 * @author mianma
 * @created 2014/11/27 15:29
 * @edited  2014/11/27 20:40
 * @type 
 * @note
 */
#include <cstdio>
#include <stack>
#include <cstring>
#include <vector>
#include <set>
using namespace std;
#define max(a, b)  ((a) > (b) ? (a) : (b))
#define min(a, b)  ((a) > (b) ? (b) : (a)) 
#define abs(a)     ((a) >  0  ? (a) : (0 - (a)))
#define CLR(vec)   memset(vec, 0, sizeof(vec))
#define MAXN 1000010
set<int> lft_store;
set<int> rht_store;
int n;
//int lft[MAXN];
int rht[MAXN];
int i;
int left, right, curr, tmp;
int main(void){
#ifdef DEBUG
    freopen("./in",  "r", stdin);
    freopen("./out", "w", stdout);
#endif
    scanf("%d", &n);
    for(i = 0; i < n ; i++){
        scanf("%d%d", &left, &right);
        //lft[right] = left;
        rht[left]  = right;
        if(left)
        lft_store.insert(left);
        if(right)
        rht_store.insert(right);
    }
    for(set<int>::iterator iter = rht_store.begin(); iter != rht_store.end(); iter++){
#ifdef DEBUG
        printf("match = %d\n", *iter);
#endif
        lft_store.erase(*iter);
    }
    /*Get queue head*/
    curr = *lft_store.begin();
    right = rht[0];
#ifdef DEBUG
    printf("curr = %d, rht = %d\n", curr, right);
#endif
    do{
        printf("%d ", curr);
        tmp = rht[curr];
        curr = right;
        right = tmp;
#ifdef DEBUG
    //printf("curr = %d, rht = %d\n", curr, right);
#endif
    }while(right);
    printf("%d\n", curr);
    return 0;
}
时间: 2024-10-24 22:24:10

Codeforces Round #279 (Div. 2) b的相关文章

Codeforces Round #279 (Div. 2) ABCD

Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name     A Team Olympiad standard input/output 1 s, 256 MB  x2377 B Queue standard input/output 2 s, 256 MB  x1250 C Hacking Cypher standard input/output 1 s, 256 MB  x740 D Chocolate standard input/

Codeforces Round #279 (Div. 2) a

/**  * @brief Codeforces Round #279 (Div. 2) a  * @file a.cpp  * @author 面码  * @created 2014/11/26 17:05  * @edited  2014/11/26 17:05  * @type   *  */ #include <cstdio> #include <stack> #include <cstring> using namespace std; #define max

Codeforces Round #279 (Div. 2) d

/**  * @brief Codeforces Round #279 (Div. 2) d  * @file d.cpp  * @author 面码  * @created 2014/12/09 10:58  * @edited  2014/12/09 10:58  * @type math greedy  * @note 自己的AC不了,参考别人的,重点是2和3都是质数,所以可以使用贪心求解.  */ #include <fstream> #include <iostream>

Codeforces Round #279 (Div. 2) 题解集合

终于有场正常时间的比赛了...毛子换冬令时还正是好啊233 做了ABCD,E WA了3次最后没搞定,F不会= = 那就来说说做的题目吧= = A. Team Olympiad 水题嘛= = 就是个贪心什么的乱搞,貌似放A题难了 1 #include <cstdio> 2 #include <algorithm> 3 4 using namespace std; 5 const int N = 5005; 6 7 int cnt[5], first[5], next[N]; 8 9

Codeforces Round #279 (Div. 2) F. Treeland Tour(lis+dfs)

题目链接: huangjing 题意:告诉一个无向无环图,然后求在联通的路上的lis. 思路:枚举起点求lis 复杂度是n^2logn,貌似这复杂度对时间有点玄,估计是数据有点弱... 首先枚举起点,然后求lis,主要是用dfs求的,要用到回溯的思想,我觉得是只要更新了,就要保存那个操作,然后一旦这一次的搜索完成,那么就要立即回复g数组的值,因为有很多不同的路线,所以一条路走完后,就要回复以前的状态哦,免得影响另外一条路..我觉得尽管他们都说是暴力,但是我觉得这个题还是蛮好的... 题目: F.

Codeforces Round #279 (Div. 2) 解题报告

A - Team Olympiad 贪心水题..都从第一个开始取即可. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h> #include <queue> #include <map

Codeforces Round #279 (Div. 2)B. Queue(构造法,数组下标的巧用)

这道题不错,思维上不难想到规律,但是如何写出优雅的代码比较考功力. 首先第一个人的序号可以确定,那么接下来所有奇数位的序号就可以一个连一个的确定了.然后a[i].first==0时的a[i].secod就是第二个人的序号,然后偶数位的序号也可以一个连一个的确定了. 用一个next数组,其下标就是a[i].first,其值就是a[i].second,这样巧妙地使用数组下标就解决了“串链子”这个难点,我之前想的每次用二分来找真是弱爆了.. 而在找第一个人的序号时也是妙用flag数组下标. #incl

【Codeforces Round#279 Div.2】B. Queue

这题看别人的.就是那么诚实.http://www.cnblogs.com/zhyfzy/p/4117481.html B. Queue During the lunch break all n Berland State University students lined up in the food court. However, it turned out that the food court, too, has a lunch break and it temporarily stopp

Codeforces Round #279 (Div. 2)f

树形最大上升子序列 这里面的上生子序列logn的地方能当模板使  good #include<iostream> #include<string.h> #include<stdio.h> #include<algorithm> #include<vector> using namespace std; const int maxa = 6006; vector<int>e[maxa]; int d[maxa]; int a[maxa]