题解 | #Is It A Tree?#

Is It A Tree?

http://www.nowcoder.com/practice/1c5fd2e69e534cdcaba17083a5c56335

#include<iostream>
#include<map>
using namespace std;
int main()
{
    int s, e, ss = 0, cnt;
    bool ans = true;
    map<int, int> mp;   //s --> e
    while (cin >> s >> e) {
        if (s == 0 && e == 0) {
            cnt = 0;
            ss++;
            for (auto it : mp) {
                if (it.second == 0) {
                    cnt += 1;
                    if (cnt > 1) {
                        ans = false;
                        break;
                    }
                }
                if (it.second > 1) {
                    ans = false;
                    break;
                }
            }
            if(cnt == 0 && mp.size() == 0)
                ans = true;
            else if(cnt == 0)
                ans = false;
            cout << "Case " << ss << " is " << (ans == false? "not " : "") << "a tree." << endl;
            mp.clear();
            ans = true;
        }
        else {
            if (mp.find(e) == mp.end())
                mp[e] = 1;
            else
                mp[e] += 1;
            if (mp.find(s) == mp.end())
                mp[s] = 0;
            if (s == e)
                ans = false;
        }
    }
}
全部评论
#include<iostream> #include<vector> #include<map> #include<set> using namespace std; int find(int x,vector<int> &father){ if(x != father[x]) father[x] = find(father[x],father); return father[x]; } void Union(int s,int e,vector<int> &father){ s = find(s,father); e = find(e,father); if(s != e) father[s] = e; } int main() { ios::sync_with_stdio(false); cin.tie(0); int s = 0,e = 0,cnt = 0,num = 0; bool flag = true; vector<int> father; map<int> indegree; set<pair><int> > Set; for(int i = 0;i <= 10000;++i) father.push_back(i); while(s != -1 && e != -1){ while(cin >> s >> e && s && e && s != -1 && e != -1){ if(Set.count(pair<int>(s,e)) == 0) Set.insert(pair<int>(s,e)); else flag = false; } if(s == -1 && e == -1) break; for(auto it : Set){ s = it.first,e = it.second; if(s != 0 || e != 0){ indegree[e]++; if(indegree[e] > 1) flag = false; if(indegree.find(s) == indegree.end()) indegree[s] = 0; Union(s,e,father); } else break; } num++; for(auto it : indegree) if(find(it.first,father) == it.first) cnt++; //排除可能存在的自环 int tag = 0; for(auto it : indegree) if(it.second == 0) tag++; if((cnt > 1 || flag == false || tag == 0 || tag > 1) && !Set.empty()) cout << "Case " << num << " is not a tree." << endl; else cout << "Case " << num << " is a tree." << endl; cnt = 0; father.clear(); for(int i = 0;i <= 10000;++i) father.push_back(i); indegree.clear(); flag = true; Set.clear(); } }</int></int></int></pair></int></int></int></int></set></map></vector></iostream>
点赞 回复 分享
发布于 2022-03-27 16:55

相关推荐

暴走萝莉莉:这是社招场吧,作为HR说个实话:这个维护关系的意思是要有政府资源,在曾经的工作中通过人脉资源拿下过大订单的意思。这个有相关管理经验,意思也是真的要有同岗位经验。应酬什么的对于业务成交来说就算不乐意也是常态,就是要求说话好听情商高,酒量好。
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:池是池,发是发,我曾池,我现黑
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
442405次浏览 4511人参与
# 春招别灰心,我们一人来一句鼓励 #
41942次浏览 531人参与
# 北方华创开奖 #
107433次浏览 599人参与
# 地方国企笔面经互助 #
7962次浏览 18人参与
# 同bg的你秋招战况如何? #
76670次浏览 561人参与
# 虾皮求职进展汇总 #
115613次浏览 886人参与
# 阿里云管培生offer #
120248次浏览 2220人参与
# 实习,投递多份简历没人回复怎么办 #
2454658次浏览 34857人参与
# 实习必须要去大厂吗? #
55771次浏览 961人参与
# 提前批简历挂麻了怎么办 #
149901次浏览 1977人参与
# 投递实习岗位前的准备 #
1195935次浏览 18548人参与
# 你投递的公司有几家约面了? #
33206次浏览 188人参与
# 双非本科求职如何逆袭 #
662208次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4753次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157628次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11561次浏览 287人参与
# 发工资后,你做的第一件事是什么 #
12704次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35804次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20126次浏览 240人参与
# 我的上岸简历长这样 #
452016次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39299次浏览 314人参与
# 非技术岗是怎么找实习的 #
155868次浏览 2120人参与
牛客网
牛客企业服务