1032 Sharing (25 point(s))

版权声明:听说这里让写版权声明~~~ https://blog.csdn.net/m0_37691414/article/details/86681216

题解

查找公共开始点,直接遍历一遍就可以知道啦。

#include<cstdio>
using namespace std;
const int MAXN = 1e6;
struct node {
	char data;
	int nextaddr;
	bool flag;
}word[MAXN];
int a, b, n, addr, data, nextaddr;
int main() {
	scanf("%d%d%d", &a, &b, &n);
	for(int i = 0; i < n; ++i) {
		scanf("%d%*c%c%d", &addr, &data, &nextaddr);
		word[addr].data = data, word[addr].nextaddr = nextaddr;
	}
	while(a != -1) {
		word[a].flag = true;
		a = word[a].nextaddr;
	}
	while(b != -1) {
		if(word[b].flag) {
			printf("%05d", b);
			break;
		}
		b = word[b].nextaddr;
	}
	if(b == -1) printf("-1");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_37691414/article/details/86681216