比试
这道题用正常的方法一定会超时。
题目要求的是交换数列中所有的x和y,所以我们可以建立一个数组p[x] = y, p[y] = x,输出的时候输出对应的数组值即可
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int s[N], n, m;
int p[20];
int main()
{
cin.tie(0) -> sync_with_stdio(0);
while(cin >> n >> m)
{
for(int i = 0; i < n; i++)
cin >> s[i];
for(int i = 0; i < 10; i++) p[i] = i;
while(m--)
{
int x, y;
cin >> x >> y;
for(int i = 0; i < 10; i++)
{
if(p[i] == x) p[i] = y;
else if(p[i] == y) p[i] = x;
}
}
for(int i = 0; i < n; i++)
{
if(p[s[i]] == s[i])
cout << s[i] << (i == n - 1 ? "/n/n" : " ");
else
cout << p[s[i]] << (i == n - 1 ? "/n/n" : " ");
}
}
return 0;
}
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/267283.html