拓扑排序 hdu 2094

来源:互联网 发布:淘宝账号如何绑定手机 编辑:程序博客网 时间:2024/06/05 23:13

找到入度为0的点,也就是说没输过的点,如果总数为1个就是唯一冠军,如果不唯一那么冠军不确定,输出-1;

#include<stdio.h>#include<algorithm>#include<queue>#include<string.h>#include<string>#include<map>using namespace std;char ss[500],ss1[500];int g[500][500];int indegree[500];int main(){    int n;    while(~scanf("%d",&n)&&n)    {        memset(g,0,sizeof(g));        memset(indegree,0,sizeof(indegree));        map<string,int>mp;        int cont=1;        for(int i=0;i<n;i++)        {            scanf("%s%s",ss,ss1);            if(!mp[ss])            mp[ss]=cont++;            if(!mp[ss1])            mp[ss1]=cont++;           // g[mp[ss]][mp[ss1]]=1;            indegree[mp[ss1]]++;        }        int sum=0;        //printf("%d...\n",cont);        for(int i=1;i<cont;i++)        {            if(!indegree[i])                sum++;        }        if(sum==1)            printf("Yes\n");        else printf("No\n");    }}

原创粉丝点击