Submission #411627

# Submission time Handle Problem Language Result Execution time Memory
411627 2021-05-25T16:07:48 Z RGBB Bread First Search (CCO21_day2problem2) C++14
0 / 25
15 ms 22348 KB
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int>pp;
const int MAX=200000;
int n,m,inp[MAX][4],outp[MAX];
bool vis[MAX];
unordered_set<int>f[MAX],b[MAX];
queue<int>q;
priority_queue<pp>pq;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    memset(vis,false,sizeof(vis));
    cin>>n>>m;
    for(int i=0;i<m;i++){
        cin>>inp[i][0]>>inp[i][1]>>inp[i][2]>>inp[i][3];
        inp[i][0]--;
        inp[i][1]--;
        f[inp[i][0]].insert(i);
        b[inp[i][1]].insert(i);
    }
    for(int i=0;i<n;i++)if(f[i].size()==0)q.push(i);
    while(!q.empty()){
        int cur=q.front();
        q.pop();
        outp[cur]=-1;
        for(auto&i:b[cur]){
            if(vis[i])continue;
            vis[i]=true;
            f[inp[i][0]].erase(f[inp[i][0]].find(i));
            if(f[inp[i][0]].size()==0)q.push(inp[i][0]);
        }
    }
    for(int i=0;i<m;i++)if(!vis[i])pq.push({inp[i][2],i});
    while(!pq.empty()){
        pp cur=pq.top();
        pq.pop();
        if(vis[cur.second])continue;
        vis[cur.second]=true;
        int ai=inp[cur.second][0];
        int bi=inp[cur.second][1];
        f[ai].erase(f[ai].find(cur.second));
        b[bi].erase(b[bi].find(cur.second));
        if(f[ai].size()==0){
            for(auto&i:b[ai])if(!vis[i])if(cur.first-inp[i][3]>inp[i][2])pq.push({cur.first-inp[i][3],i});
            outp[ai]=cur.first;
        }
    }
    for(int i=0;i<n-1;i++)cout<<outp[i]<<" ";
    cout<<outp[n-1]<<"\n";
}
# Verdict Execution time Memory Grader output
1 Incorrect 15 ms 22348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 15 ms 22348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 15 ms 22348 KB Output isn't correct
2 Halted 0 ms 0 KB -