zoukankan      html  css  js  c++  java
  • CodeForces 909E

    题意略。

    思路:一个拓扑排序的题目吧。肯定是要先处理后面那个任务,再处理前面那个任务,我的思路是尽力先把主处理器能操作的先操作完,然后再把副处理器能操作完的再操作完,这样循环,直到处理完全部。

    定义total变量为已经处理完的任务总数。

    详见代码:

    #include<bits/stdc++.h>
    #define maxn 100005
    using namespace std;
    
    int mark[maxn],indegree[maxn];
    vector<int> graph[maxn];
    int N,M;
    queue<int> que[2];
    
    int main(){
        scanf("%d%d",&N,&M);
        for(int i = 0;i < N;++i) scanf("%d",&mark[i]);
        int u,v;
        for(int i = 0;i < M;++i){
            scanf("%d%d",&u,&v);
            graph[v].push_back(u);
            indegree[u] += 1;
        }
        int ans = 0;
        int total = N;
        for(int i = 0;i < N;++i){
            if(indegree[i] == 0){
                que[mark[i]].push(i);
            }
        }
        while(total > 0){
            while(que[0].size()){
                int temp = que[0].front();
                que[0].pop();
                total -= 1;
                for(int i = 0;i < graph[temp].size();++i){
                    int nxt = graph[temp][i];
                    indegree[nxt] -= 1;
                    if(indegree[nxt] == 0)
                        que[mark[nxt]].push(nxt);
                }
            }
            if(total == 0) break;
            ans += 1;
            while(que[1].size()){
                int temp = que[1].front();
                que[1].pop();
                total -= 1;
                for(int i = 0;i < graph[temp].size();++i){
                    int nxt = graph[temp][i];
                    indegree[nxt] -= 1;
                    if(indegree[nxt] == 0)
                        que[mark[nxt]].push(nxt);
                }
            }
        }
        if(que[1].size()) ans += 1;
        printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    redis总结
    java程序启动脚本
    mysql生成百万测试数据脚本
    java分布式锁的实现及在springboot中的应用
    mysql使用总结
    一个java实现代码(服务)编排的思路(未完)
    sentinel自定义统一限流降级处理
    shell学习
    oracle查看被锁的事务进程sql
    Sql查询两个时间段有重叠的记录
  • 原文地址:https://www.cnblogs.com/tiberius/p/9259882.html
Copyright © 2011-2022 走看看