2839: 练51.3 纸杯猜数
内存限制:64 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:12
解决:6
题目描述
你和小华正在玩纸杯猜数游戏。
小华在桌面上扣放了一排$n$个纸杯,依次标号为$1\sim n$。每个纸杯内侧写有一个数字。
小华先将每个纸杯上的数字告诉小明,然后他快速的进行了如下$m$次交换操作:
选择两个纸杯$u$和$v$,交换它们的位置。($u$,$v$相同表示本次不交换)
现在小华想让你回答:$m$次操作后依次排列的纸杯上的数字分别是多少。
小华在桌面上扣放了一排$n$个纸杯,依次标号为$1\sim n$。每个纸杯内侧写有一个数字。
小华先将每个纸杯上的数字告诉小明,然后他快速的进行了如下$m$次交换操作:
选择两个纸杯$u$和$v$,交换它们的位置。($u$,$v$相同表示本次不交换)
现在小华想让你回答:$m$次操作后依次排列的纸杯上的数字分别是多少。
输入
第一行输入两个数$n$,$m$,分别表示纸杯数、操作数($1≤n$,$m≤50000$);
第二行输入$n$个数,分别表示每个纸杯内侧的数字之后$m$行,每行两个数$u$,$v$,表示将这两个纸杯交换。
第二行输入$n$个数,分别表示每个纸杯内侧的数字之后$m$行,每行两个数$u$,$v$,表示将这两个纸杯交换。
输出
输出一行$n$个数,表示交换后每个纸杯内侧的数字依次是多少。以空格隔开。
样例输入 复制
8 3
1 4 7 20 5 3 11 6
3 7
2 6
5 3
样例输出 复制
1 3 5 20 11 4 7 6
提示
#include<bits/stdc++.h> using namespace std; int a[50010],n,m,j,k; int main(){ cin>>n>>m; for (int i=1;i<=n;i++) cin>>a[i]; for (int i=1;i<=m;i++) { cin>>j>>k; swap(a[j],a[k]); } for (int i=1;i<=n;i++) cout<<a[i]<<" "; return 0; }