题解 | #旅行Ⅰ#

旅行Ⅰ

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;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务