トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

2006rb1.c

#include <stdio.h>
#include <stdlib.h>

// クジデータを読み込むための構造体
typedef struct{
	int h;
	int p;
	int q;
} KUJI;

/*--- 交換 ---*/
void swap(KUJI *x, KUJI *y)
{
	KUJI  temp = *x;
	*x = *y;
	*y = temp;
} 

/*--- 配列dataの先頭n個のソート ---*/
void sort(KUJI data[], int n)
{
	int  k = n - 1;
	while (k >= 0){
		int	 i, j;
		for (i = 1, j = -1; i <= k; i++)
			if (data[i - 1].h < data[i].h) {
				j = i - 1;
				swap(&data[i], &data[j]);
			}
		k = j;
	}
} 

main()
{
	int n, m, e, h, p, q, i, j, k, now;
	KUJI kuji[1001];
	
	while(1){
		scanf("%d %d %d", &n, &m, &e);
		if(n==0 && m==0 && e==0) break;
		
		// クジ初期化
		for(i=1; i<=m; i++){
			kuji[i].p=kuji[i].q=0;
		}
		
		// クジ読み込み
		for(i=0; i<m; i++){
			scanf("%d %d %d", &h, &p, &q);
			kuji[i].h=h;
			kuji[i].p=p;
			kuji[i].q=q;
		}
		// 高さの順番に並べ替え
		sort(kuji, m);
		
		now=e;
		for(i=0; i<m; i++){
			// 今の縦棒の位置に横棒がのびてれば
			if(kuji[i].p==now){
				now=kuji[i].q;
			}else if(kuji[i].q==now){
				now=kuji[i].p;
			}
		}
		printf("%d\n", now);
	}
	
	
	return 0;
}