1. 程式人生 > 遊戲 >Switch版新證據 《心靈殺手:復刻版》被ESRB評級

Switch版新證據 《心靈殺手:復刻版》被ESRB評級

樹,或者深林 變成二叉樹:

兒子變做兒子 ,兄弟 便有兒子

小注意 : 定義2個父親。

#include <bits/stdc++.h>
using namespace std;
#define ri register int 
#define M 105

int n,m;
int fa[M],f[M];
vector <int> q,p[M];
int flag[M];
void dfs(int a)
{
    
    //if(p[a].size())
    sort(p[a].begin(),p[a].begin()+p[a].size());
    for
(ri i=0;i<p[a].size()&&i<1;i++) { f[p[a][i]]=a; flag[p[a][i]]=1; dfs(p[a][i]); break; } int b=fa[a]; if(a!=0) { //if(p[b].size()) sort(p[b].begin(),p[b].begin()+p[b].size()); for(ri i=0,trmp=0;i<p[b].size();i++) {
if(!flag[p[b][i]]) { flag[p[b][i]]=1; f[p[b][i]]=a; dfs(p[b][i]); break; } } } } int main(){ scanf("%d%d",&n,&m); for(ri i=1;i<=m;i++) { int a,b; scanf("%d%d",&a,&b); p[a].push_back(b); fa[b]
=a; } for(ri i=1;i<=n;i++) { if(fa[i]==0) q.push_back(i); } for(ri i=0;i<q.size();i++) { int a=q[i]; fa[a]=0; p[0].push_back(a); } dfs(0); for(ri i=1;i<=n;i++) printf("%d\n",f[i]); }
變變變