<——求赞(´இωஇ`)
Python3
from collections import deque
def solve():
n, r1 , r2 = map(int, input().split())
g = {}
a = list(map(int, input().split()))
for i in range(1, n):
t = a[i-1]
if t not in g:
g[t] = []
if i < r1:
if i not in g:
g[i] = []
g[i].append(t)
g[t].append(i)
else:
if i+1 not in g:
g[i+1] = []
g[i+1].append(t)
g[t].append(i+1)
v = [0]*(n+2)
q = deque()
q.append(r2)
while q:
cur = q.pop()
for x in g[cur]:
if v[x] == 0:
v[x] = cur
q.append(x)
ret = []
for i in range(1, n+1):
if i != r2:
ret.append(v[i])
print(*ret)
solve()
C++
#include<bits/stdc++.h>
using namespace std;
const int N = 5e4+100;
int p[N];
int ans[N];
vector<int>v[N];
void dfs(int u,int fa)
{
p[u]=fa;
for(int i=0;i<v[u].size() ;i++)
{
int j=v[u][i];
if(j!=fa)
{
dfs(j,u);
}
}
}
signed main()
{
int n,r1,r2;
cin>>n>>r1>>r2;
for(int i=1;i<=n;i++)
{
if(i==r1) continue;
int x;
cin>>x;
v[x].push_back(i);
v[i].push_back(x);
}
dfs(r2,0);
for(int i=1;i<=n;i++)
{
if(p[i]!=0) cout<<p[i]<<" ";
}
cout<<endl;
return 0;
}
C
#include <stdio.h>
int res=0;
void find(int n,int weizhi1,int weizhi,int *f){
if(res==500010)return;
res++;
find(n,weizhi,f[weizhi],f);
f[weizhi]=weizhi1;
}
int main(void){
int i,n,r1,r2,fjd[50010],item;
scanf("%d %d %d",&n,&r1,&r2);
for(i=1;i<=n;i++){
if(i==r1){
fjd[i]=-1;
continue;
}
scanf("%d",&fjd[i]);
if(i==r2){
item=fjd[i];
}
}
find(n,r2,item,fjd);
for(i=1;i<=n;i++){
if(i!=r2)printf("%d ",fjd[i]);
}
return 0;
}
Go
package main
import (
"fmt")
var arr [N]int
var st [N]bool
var n, r1, r2, p int
const N = 50050
var e, ne [N * 2]int
var h [N]int
var index int
func add(a, b int) {
e[index] = b
ne[index] = h[a]
h[a] = index
index ++
}
func dfs(root int) {
st[root] = true
for i := h[root]; i != -1; i = ne[i] {
next := e[i]
if !st[next] {
arr[next] = root
dfs(next)
}
}
}
func main(){
for i := 0; i < len(h); i ++ {
h[i] = -1
}
fmt.Scan(&n, &r1, &r2)
for i := 1; i <= n; i ++ {
if i != r1 {
fmt.Scan(&p)
add(i, p)
add(p, i)
}
}
arr[r2] = r2
dfs(r2)
for i := 1; i <= n; i ++ {
if i != r2 {
fmt.Printf("%d ", arr[i])
}
}
}
Java
import java.io.*;
import java.util.*;
public class Main {
static int N = 50010;
static int[] h = new int[N];
static int[] e = new int[N * 2], ne = new int[N * 2];
static int idx = 0;
static Map<Integer, Integer> map = new HashMap<>();
static void add(int a, int b) {
e[idx] = b;
ne[idx] = h[a];
h[a] = idx++;
}
static void dfs(int u, int v) {
for(int i = h[u]; i != -1; i = ne[i]) {
int j = e[i];
if(j == v)
continue;
map.put(j, u);
dfs(j, u);
}
}
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int r1 = sc.nextInt();
int r2 = sc.nextInt();
Arrays.fill(h, -1);
for(int i = 1; i <= n; i++) {
if(i == r1)
continue;
int p = sc.nextInt();
add(p, i);
add(i, p);
}
dfs(r2, -1);
for(int i = 1; i <= n; i++) {
if(i == r2)
continue;
System.out.print(map.get(i) + " ");
}
}
}
写的好棒!!!
我喜欢你头像
牛牛牛
牛逼!!
蒟蒻膜拜巨佬