题解 P7369【Elder】
思路
这是一道模拟题,记录一下老魔杖在谁手里就行了
坑点
如果A从B那里得到了老魔杖,之后B又从A手中将老魔杖抢了回去,老魔杖的效忠对象就只有2人,而不是3人
其他问题就看代码的注释吧
Code
#include<iostream>
#define N 100010
using namespace std;
int hp[N]/*用于记录老魔杖在哪个巫师手里*/,n;
int ans=1/*记录老魔杖共有多少个效忠对象*/,pd[N];
char a,b,A,wsna/*记录老魔杖目前的效忠对象*/;
signed main()
{
cin>>A;
hp[A]=1;//老魔杖在A手中
wsna=A;// 最开始老魔杖的效忠对象是A
pd[A]=1;//A已经得到过老魔杖
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a>>b;
if(hp[b]==1)//如果老魔杖在B手中
{
hp[a]=1;
hp[b]=0;
//转移老魔杖
wsna=a;//将老魔杖的效忠对象改为a
if(pd[a]==0)//如果a没有得到过老魔杖
{
pd[a]=1;//标记a
ans++;//增加老魔杖的效忠对象个数
}
}
}
cout<<wsna<<endl;
cout<<ans<<endl;
return 0;
}