Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
29785 masppy 【J】T4 C++ 解答错误 50 898 MS 59888 KB 1975 2024-05-26 20:58:28

Tests(5/10):


#include<bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e5+10; const ll inf=2147483647; const ll mod=998244353; ll n,m,root=0,tot=0,ans=0; ll load[maxn],a[maxn*15],b[maxn],t,fa[maxn],in[maxn],dep[maxn]; vector<int> q[maxn]; vector<int> color[maxn*10]; void init(int pos,int from,int depth){ dep[pos]=depth; int siz=q[pos].size(); for(int i=0;i<siz;i++){ int v=q[pos][i]; if(v==from) continue; init(v,pos,depth+1); } } bool dfs(int x,int y){ if(a[x]==y){ return true; } if(x==1) return false; int siz=q[x].size(); for(int i=0;i<siz;i++){ int v=q[x][i]; if(dep[v]>dep[x]) continue; if(in[v]) return false; if(!dfs(fa[v],y)) return false; in[x]=1; fa[x]=fa[v]; return true; } } int main(){ // freopen("test.in","r",stdin); // freopen("code.out","w",stdout); scanf("%d",&t); while(t--){ scanf("%d",&n); for(int i=1;i<n;i++){ int x,y; scanf("%d%d",&x,&y); q[x].push_back(y); q[y].push_back(x); } for(int i=1;i<=n;i++){ scanf("%d",&a[i]); color[a[i]].push_back(i); } for(int i=1;i<=n;i++){ scanf("%d",&b[i]); } init(1,0,1); for(int i=1;i<=n;i++){ fa[i]=i; in[i]=0; } bool fg=0; for(int i=1;i<=n;i++){ if((i==1||q[i].size()!=1)&&(q[i].size()!=0)) continue; if(!dfs(i,b[i])){ fg=1; break; } } for(int i=1;i<=n;i++){ // cout<<q[i].size()<<endl; if(i!=1&&q[i].size()==1) continue; int siz=color[b[i]].size(); bool fg1=0; for(int j=0;j<siz;j++){ int v=color[b[i]][j]; // cout<<v<<" "<<i<<" "<<fa[v]<<" "<<fa[i]<<endl; if(fa[v]=fa[i]){ fg1=1; break; } } if(!fg1){ fg=1; break; } } if(!fg) printf("Yes\n"); else printf("No\n"); for(int i=1;i<=n;i++){ q[i].clear(); color[a[i]].clear(); } } // fclose(stdin); // fclose(stdout); return 0; }


测评信息: