题解 | #旅行Ⅰ#

旅行Ⅰ

http://www.nowcoder.com/practice/ecc6e261da68412caad810669b1e891f

// 什么压行狂魔(
class Solution {
public:
    using pii = pair<int,int>;
    vector<int> ed[100010];
    int d[100010],ans=0;
    int Travel(int N, int V, vector<int>& A, vector<Point>& list) {
        for(auto [x,y]:list)  ed[x].push_back(y),d[y]++;
        auto cmp = [&](pii a,pii b) -> bool{
            if(a.first == b.first) return a.second < b.second;
            else return a.first < b.first;
        };
        priority_queue<pii,vector<pii>,decltype(cmp)> pq(cmp);
        for(int i=1;i<=N;i++) if(!d[i]) pq.push({i,A[i]});
        while(!pq.empty())
        {
            auto [x,y] = pq.top(); pq.pop();
            if(V<y) break; V-=y;
            ans++;
            for(auto v:ed[x]) if(--d[v] == 0)  pq.push({v,A[v]});
        }
        return ans;
    }
};
全部评论

相关推荐

不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务