题解:AT_abc424_c [ABC424C] New Skill Acquired
前言
赛时苦战
题目大意
有
解题思路
DFS 即可。
考虑每个技能的前置技能,声明
AC 代码
#include<bits/stdc++.h>
#define re ree()
#define pbk push_back
using namespace std;
long long ree(){long long f=1,k=0;char c=getchar();while(c<'0'||c>'9'){if(c == '-')f = -1;c=getchar();}while(c>='0'&&c<='9'){k=k*10+c-'0';c=getchar();}return f*k;}
long long n,m,k,bo[500010],cnt[500010],ans,vis[500010];
struct node{
long long a,b,i;
}a[500100];
vector<int> vec[500010];
void dfs(int x) //dfs
{
if(vis[x]!=0)
{
return;
}
ans++;
vis[x]=1;
for(int i=0;i<vec[x].size();i++)
{
dfs(vec[x][i]);
}
return;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
a[i].a=re;
a[i].b=re;
vec[a[i].a].pbk(i);
vec[a[i].b].pbk(i);
}
for(int i=1;i<=n;i++)
{
if(a[i].a==0&&a[i].b==0)
{
dfs(i);
}
}
cout<<ans;
return 0;
}