Educational Codeforces Round 14
来源:互联网 发布:php大转盘抽奖源码 编辑:程序博客网 时间:2024/06/05 10:18
You are given a permutation of the numbers 1, 2, ..., n and m pairs of positions (aj, bj).
At each step you can choose a pair from the given positions and swap the numbers in that positions. What is the lexicographically maximal permutation one can get?
Let p and q be two permutations of the numbers 1, 2, ..., n. p is lexicographically smaller than the q if a number 1 ≤ i ≤ n exists, so pk = qk for 1 ≤ k < i and pi < qi.
The first line contains two integers n and m (1 ≤ n, m ≤ 106) — the length of the permutation p and the number of pairs of positions.
The second line contains n distinct integers pi (1 ≤ pi ≤ n) — the elements of the permutation p.
Each of the last m lines contains two integers (aj, bj) (1 ≤ aj, bj ≤ n) — the pairs of positions to swap. Note that you are given a positions, not the values to swap.
Print the only line with n distinct integers p'i (1 ≤ p'i ≤ n) — the lexicographically maximal permutation one can get.
9 61 2 3 4 5 6 7 8 91 44 72 55 83 66 9
7 8 9 4 5 6 1 2 3
POINT:
并差集合并,开maxn个优先队列,在贪心的放置就行。
#include <string>#include <string.h>#include <iostream>#include <queue>#include <math.h>#include <stdio.h>#include <algorithm>using namespace std;#define LL long longconst int maxn = 1e6+55;priority_queue<int> q[maxn];int a[maxn];int fa[maxn];int findi(int x){return x==fa[x]?fa[x]:fa[x]=findi(fa[x]);}void add(int x,int y){int xx=findi(x);int yy=findi(y);fa[yy]=xx;}int main(){int n,m;scanf("%d %d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);fa[i]=i;}for(int i=1;i<=m;i++){int u,v;scanf("%d %d",&u,&v);add(u,v);}for(int i=1;i<=n;i++){q[findi(i)].push(a[i]);}for(int i=1;i<=n;i++){printf("%d ",q[fa[i]].top());q[fa[i]].pop();}return 0;}
- Educational Codeforces Round 14
- Educational Codeforces Round 14
- Educational Codeforces Round 14
- Educational Codeforces Round 14
- Educational Codeforces Round 14 题解
- Educational Codeforces Round 14 E.Xor-sequences
- 【解题报告】Educational Codeforces Round 14
- Educational Codeforces Round 1
- Educational Codeforces Round 2
- Educational Codeforces Round 2
- Educational Codeforces Round 2
- Educational Codeforces Round 3
- Codeforces Educational Round 3
- Codeforces Educational Round 5
- Codeforces Educational round 5
- Educational Codeforces Round 5
- Educational Codeforces Round 6
- Educational Codeforces Round 6
- Android进阶系列之AOP面向切面编程
- Java 浮点数 float和double类型的表示范围和精度
- Linux/unix configuration and Certs stuff
- 关于javascript的浅拷贝和深拷贝
- Navicat for MySQL出现1030-Got error 28 from storage engine错误
- Educational Codeforces Round 14
- 7-66 找出总分最高的学生
- mac下执行git命名 xcrun: error: active developer path错误解决方法
- 机器学习经典 PRML 最新 Python 代码实现,附最全 PRML 笔记视频学习资料
- Nginx——8
- Python[问题处理] django-admin.py startproject learning_log .
- 通过有序数组生成平衡搜索二叉树
- SpringMVC的Service互相循环调用错误: org.springframework.beans.factory.BeanCurrentlyInCreationException
- JDK1.8新特性