产生冠军
产生冠军
1944864971 发表于2年前
产生冠军
  • 发表于 2年前
  • 阅读 4
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

include

include

include

include

include

include

include

using namespace std;
///找出入度为0的有且只有一个即可以产生冠军,不用拓扑排序
int du[2005];
bool panDuan(int n)///判断所有点的入度为0的个数
{
int sum=0;
for(int i=1; i<=n; i++)
if(du[i]==0)
{
sum++;
if(sum>=2)return false;
}
if(sum==1)return true;
else return false;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
string a,b;
map m;///将人名映射成一个编号
memset(du,0,sizeof(du));
int k=0;
for(int i=1; i<=n; i++)
{
cin>>a >>b;
if(m[a]==0)m[a]=++k;///没有赋值之前初始值是0
if(m[b]==0)m[b]=++k;
du[m[b]]++;///入度加一

    }
    if(panDuan(k))printf("Yes\n");
    else printf("No\n");
}
return 0;

}

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 57
码字总数 0
×
1944864971
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: