Go: package main

import (
	"bufio"
	"os"
	"strconv"
	"fmt"
	"strings"
)

var scanner = bufio.NewScanner(os.Stdin)

func nextInt() int {
	scanner.Scan()
	i, e := strconv.Atoi(scanner.Text())
	if e != nil {
		panic(e)
	}
	return i
}

func nextString() string {
	scanner.Scan()
	return scanner.Text()
}

func swap(ints []int, i, j int) {
	ints[i], ints[j] = ints[j], ints[i]
}

func main() {
	w := nextInt()
	// println(w)
	nums := make([]int, w)
	for i := range nums {
		nums[i] = i+1
	}
	n := nextInt()
	// println(n)
	for i := 0; i < n; i++ {
		info := nextString()
		// println(info)
		infos := strings.Split(info, ",")
		a, _ := strconv.Atoi(infos[0])
		b, _ := strconv.Atoi(infos[1])
		swap(nums, a-1, b-1)
	}
	for _, v := range nums {
		fmt.Println(v)
	}
}

C++: #include <iostream>
#include <vector>
using namespace std;
int main() {
int w, n;
while (cin >> w >> n) {
vector<int> vec;
for (int i = 0; i < w; ++i) {
  vec.push_back(i + 1);
}
for (int i = 0; i < n; ++i) {
  int a, b;
  scanf("%d,%d", a, b);
  a -= 1;
  b -= 1;
  int tmp = vec[a];
  vec[a] = vec[b];
  vec[b] = tmp;
}
for (int i = 0; i < vec.size(); ++i) {
  cout << vec[i] << endl;
}
}
return 0;
}

C++: #include<iostream>
using namespace std;
void swap(int* a,int* b){
	int t=*a;
	*a=*b;
	*b=t;
	}
int main(){
	int w;
	int n;
	int c[30];
	int a;
	int b;
	scanf("%d",&w);
	scanf("%d",&n);
	for(int i=0;i<=w;i++){
		c[i]=i;
		}
	for(int i=0;i<n;i++){
		(cin>>a).ignore()>>b;
        swap(c[a],c[b]);
       }
     for(int i=1;i<=w;i++){
     	cout<<c[i]<<endl;
     }
     return 0;
    }

C++: #include <stdio.h>
#include <iostream>
#include <math.h>
#include <algorithm>
#include <string>

using namespace std;

int main(){
    int w,n;
    cin >> w >> n;
    int a[w],b[2][n];
    for(int i=1;i<=w;i++){
        a[i-1]=i;
    }
    char x[n];
    for(int i=0;i<n;i++){
        cin >> b[0][i] >>x[n] >> b[1][i];
        swap(a[b[0][i]-1],a[b[1][i]-1]);
    }
    for(int i=1;i<=w;i++){
        cout << a[i-1]<< endl;
    }
}

C++: #include <iostream>
#include <vector>
//#include <math.h>
//#include <string>
#include <cmath>
#include <iomanip>

int main();

//最初に素数リストを作成し、入力された値に対してリストを参照する。
int main(){
	int w;		//縦線の本数
	int n;		//横棒の本数
	int lines[31];		//ライン番号

	std::cin >> w >> n;
	
	//ライン番号初期化
	//範囲に注意
	for (int i = 1; i <= w; i++){
		lines[i] = i;
	}
	for (int i = 0; i < n; i++){
		int x;
		int y;
		char comma;

		std::cin >> x >> comma >> y;
		//交換処理
		int temp;
		temp = lines[x];
		lines[x] = lines[y];
		lines[y] = temp;
	}
	//結果出力
	//範囲に注意
	for (int i = 1; i <= w; i++){
		std::cout << lines[i] << std::endl;
	}

	//while (1);
	return 0;
}

C++: #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int main() {
	int amd[31];
	int w,n; scanf("%d%d", &w, &n);
	for(int i = 1; i <= w; i++) amd[i]=i;
	for(int i = 0; i < n; i++) {
		int a,b; scanf("%d,%d", &a, &b);
		swap(amd[a], amd[b]);
	}
	for(int i = 1; i <= w; i++) printf("%d\n",amd[i]);
	return 0;
}

C++: #include<stdio.h>

int main(){
int tate,yoko,bou[30][2],j,x,kekka[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30},i=0;
scanf("%d %d",&tate,&yoko);
for(j=0;j<yoko;j++){
scanf("%d , %d",&bou[j][1],&bou[j][2]);
}
for(i=1;i<tate+1;i++){
x=i;
for(j=0;j<yoko;j++){
if(bou[j][1]==x){
x=bou[j][2];
}
else if(bou[j][2]==x){
x=bou[j][1];
}
}
kekka[x-1]=i;
}
for(j=0;j<tate;j++){
printf("%d\n",kekka[j]);
}
}

C++: #include <iostream>
#include <cstdio>
using namespace std;

int main(){
  int w,n;
  int a[30],b[30],ans[100],tmp;
  cin >> w >> n;

  for(int i=0;i<n;i++)scanf("%d,%d",&a[i],&b[i]);
  

    for(int j=1;j<=w;j++){
      tmp=j;
      for(int i=0;i<n;i++){
	if(j==a[i]||j==b[i]){
	  if(j!=a[i])j=a[i];
	  else j=b[i];
	}
      }
      ans[j]=tmp;
      j=tmp;
    }
    for(int i=1;i<=w;i++)cout << ans[i]<<endl;


  return 0;
}

C++: #include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int main(){
    int s[50]={},w,n,a,b,i;
    cin >> w;
    for(i=1;i<=w;i++){
        s[i] = i;
    }
    cin >> n;
    for(i=1;i<=n;i++){
        scanf("%d,%d",&a,&b);
        swap(s[a],s[b]);
    }
    for(int i=1;i<=w;i++){
        cout << s[i] << endl;
    }
    return 0;
}

C++: #include <iostream>

using namespace std;

void swap(int& a,int& b)
{
	int tmp = a;
	a = b;
	b = tmp;
}

int main()
{
	int w,n;
	int a,b;
	int perm[31];
	char dummy;
	
	cin >> w >> n;
	
	for (int i=1; i<=w; i++) perm[i] = i;
	
	for (int i=0; i<n; i++) {
		cin >> a >> dummy >> b;
		swap(perm[a], perm[b]);
	}
	
	for (int i=1; i<=w; i++) cout << perm[i] << endl;
	
	return 0;
}

C++: #include <iostream>
#include <utility>
#include <cstring>
#include <sstream>
using namespace std;

void swap(int*,int*,int);
int main()
{
  int w,n,i;
  cin>>w>>n;
  int *numline = new int;
  for(i=0;i<w;++i){
    numline[i]=i+1;
  }
  int *swapline = new int;
  for(i=0;i<2*n;i+=2){
    char innum[10];
    cin >>innum;
    int m=0;
    while(innum[m]!=',') ++m;
    if(m==1){
      swapline[i]=innum[0]-48;
      if(strlen(innum)-m-1==1) swapline[i+1]=innum[2]-48;
      else swapline[i+1]=10*(innum[2]-48)+(innum[3]-48);
    }
    else{
      swapline[i]=10*(innum[0]-48)+(innum[1]-48);
      if(strlen(innum)-m-1==1) swapline[i+1]=innum[3]-48;
      else swapline[i+1]=10*(innum[3]-48)+(innum[4]-48);
    }
  }
  swap(numline,swapline,n);
  for(i=0;i<w;++i){
  cout<<numline[i]<<endl;
  }
  delete numline;
  delete swapline;
  return 0;
}

void swap(int numline[],int swapline[],int n)
{
  for(int i=0;i<2*n;i+=2){
    swap(numline[swapline[i]-1],numline[swapline[i+1]-1]);
  }
}

C++: #include<iostream>
#include<stdio.h>

int main(){

  int w,n,a,b,tmp;
  std::cin >> w >> n;

  int tate[w];

  for(int i=0;i<w;i++){
    tate[i]=i+1;
  }

  for(int i=0;i<n;i++){
    scanf(" %d,%d",&a,&b);
    tmp = tate[a-1];
    tate[a-1] = tate[b-1];
    tate[b-1] = tmp;
  }

  for(int i=0;i<w;i++){
    std::cout << tate[i] << std::endl;
  }


}

C++: #include<iostream>
#include<stdio.h>

#define     MAX_COUNT_W     30
#define     MAX_COUNT_N     30

using namespace std;

void myswap(int *,int *);

int main(){
	int w,n,a,b,i;
	int *pAmida;

	// w (縦棒の本数) と n (横棒の本数) を入力
	cin >> w >> n;

	// 入力のチェック
	if((w <= 0) || (w > ((int)(MAX_COUNT_W)))){
		cerr << "縦棒の本数が範囲外です" << endl;
		return -1;
	}
	if((n <= 0) || (n > ((int)(MAX_COUNT_N)))){
		cerr << "横棒の本数が範囲外です" << endl;
		return -1;
	}

	// あみだくじ 領域の確保
	pAmida = new int[w];

	// あみだくじ 領域の初期化
	for(i=0;i<w;i++){
		*(pAmida + i) = i + 1;
	}

	// あみだくじ 処理
	for(i=0;i<n;i++){
		// 横棒の入力
		scanf("%d,%d",&a,&b);
		// 入力のチェック
		if((a <= 0) || (a > w) || (b <= 0) || (b > w)){
			cerr << "棒に来る数字が範囲外です" << endl;
			i--;
		}else{
			// 前処理
			a--;
			b--;
			// 交換
			myswap(pAmida + a,pAmida + b);
		}
	}

	// 出力
	for(i=0;i<w;i++){
		cout << *(pAmida + i) << endl;
	}

	// あみだくじ 領域の解放
	delete [] pAmida;

	return 0;
}

void myswap(int *a,int *b){
	*a += *b;
	*b -= *a;
	*b *= (-1);
	*a -= *b;
}

C++: #include<iostream>
#include<algorithm>
using namespace std;
int main(){
	int w,n,a,b;
	int num[30];
	cin>>w>>n;
	for(int i=0;i<w;i++)num[i]=i+1;
	while(n--){
		cin>>a;
		cin.ignore(1);//改行まで最大１文字読み飛ばし
		cin>>b;
		swap(num[a-1],num[b-1]);
	}
	for(int i=0;i<w;i++)
		cout<<num[i]<<endl;
	return 0;
}

C++: #include <iostream>

int main(){
	int a,b,c,g,h;
	std::cin>>a>>b;
    int d[a];
    for(int e=1;e<=a;e++){
    	d[e]=e;
    	
	}
	for(int f=0;f<b;f++){
		std::cin>>g;
		std::cout<<",";
		std::cin>>h;
		c=d[g];
		d[g]=d[h];
		d[h]=c;
	}
	for(int i=1;i<=a;i++){
		std::cout<<d[i]<<std::endl;
	}
	return 0;
}

C++: #include<iostream>
using namespace std;
int w,n,t[31][31],a,b;
char ch;
int main(){
  for(int i=0;i<31;i++){
    for(int j=0;j<31;j++){
      t[i][j]=j;
    }
  } 
  cin>>w>>n;
  for(int i=1;i<=n;i++){
    cin>>a>>ch>>b;
    t[i][a]=b;
    t[i][b]=a;
  }
  for(int j=1;j<=w;j++){
    a=j;
    for(int i=n;i>=0;i--){
      a=t[i][a];
    }
    cout<<a<<endl;
  }
  return 0;
}