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;
    }
  • 相关阅读:
    linux shell 脚本30分钟教程
    ubuntu nginx+mysql+php 服务器环境自动配置脚本
    前端开发中常用工具函数总结
    经常逛的技术网站
    简单好用的在线思维导图工具
    在线短信接收
    一些图片站
    常用CSS媒体查询
    Dart Language samples
    IDEA 快捷键
  • 原文地址:https://www.cnblogs.com/tiberius/p/9259882.html
Copyright © 2011-2022 走看看