CSA Round #41 BFS-DFS
阿新 • • 發佈:2019-02-17
題意:
給出一個圖的DFS和BFS遍歷,求出改圖
分析:
直接在DFS序列中,每相鄰點間連一條邊。然後要保證BFS序列,直接把所有點按序連到1號點即可。
圖不存在的情況是BFS和DFS的第二個點不一致。
加邊的時候務必注意不能加重了(因為該原因導致最終沒過掉該題。)
程式碼:
#define maxn 5010
int a[maxn], b[maxn];
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
scanf("%d", &b[i]);
}
if (n >= 2 && a[1] != b[1]) {
puts("-1");
return 0;
}
printf("%d\n", 2 * n - 3);
for (int i = 1; i < n; i++) {
printf("%d %d\n", b[i - 1], b[i]);
}
for (int i = 2; i < n; i++) {
printf ("%d %d\n", 1, a[i]);
}
}