HDU2094

http://acm.hdu.edu.cn/showproblem.php?pid=2094
思路,用map建立节点记录名字与id信息,统计所有入度为1的节点,有且只有一个入度为1的节点的情况就是yes,否则no

#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <map>
using namespace std;

int inDegree[10005]={0};

int main()
{
    int n, t, temp, cnt;
    string p,q; 
    map<string,int> name;
    while(scanf("%d", &n) && n!=0)
    {
        for(int i=0;i<=n;i++)
          inDegree[i] = 0;
        name.clear();
        t = 1;
        while(n--)
        {
            cin>>p>>q;
            if(!name.count(p))
            {
                name.insert(make_pair(p,t));
                t++;
            }
            if(!name.count(q))
            {
                name.insert(make_pair(q,t));
                t++;
            }
            temp = name[q];
            inDegree[temp]++;
        }
        cnt = 0;
        for(int i = 1; i < t; i++)
        {
            if(inDegree[i]==0)
              cnt++;
        }
        if(cnt==1)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
} 

出现了很多意外的情况,map是边百度边写的,完全不会用,也很神奇自己能想起来,但是后面由于把大小写写错了以为是这边的问题,其实是大小写和初始化的问题。从今往后做这种有多组输入数据使用STL模板和数组建立状态信息的题目或者工程的时候一定要记得初始化,老友!!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容