19062022-12-08 21:28:56sztomiUtazás (40)cpp17Futási hiba 31/4046ms8428 KiB
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    vector<vector<int>> utak;
    vector<int> kezdok;
    vector<int> be_db;
    int n, m, q;
    cin >> n >> m >> q;
    utak.assign(n+1, vector<int>());
    kezdok.resize(q);
    be_db.assign(n+1, 0);
    for(int i = 0; i < q; i++){
        cin >> kezdok[i];
    }
    int a, b;
    for(int i = 0; i < m; i++){
        cin >> a >> b;
        utak[a].push_back(b);
        be_db[b]++;
    }

    vector<int> top_sor;
    queue<int> sor;
    for(int i = 1; i <= n; i++){
        if(be_db[i] == 0){
            sor.push(i);
        }
    }

    int akt;
    while(!sor.empty()){
        akt = sor.front();
        sor.pop();
        top_sor.push_back(akt);
        for(int kov : utak[akt]){
            be_db[kov]--;
            if(be_db[kov] == 0){
                sor.push(kov);
            }
        }
    }

    vector<int> kezd_nyer(n, false);
    kezd_nyer[top_sor[n-1]] = false;
    for(int i = n-1; i >= 0; i--){
        for(int kov : utak[top_sor[i]]){
            kezd_nyer[top_sor[i]] |= !kezd_nyer[kov];
        }
    }

    for(int x : kezdok){
        cout << (kezd_nyer[x] ? "A" : "B") << "\n";
    }

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base31/40
1Elfogadva0/03ms1860 KiB
2Elfogadva0/035ms8428 KiB
3Elfogadva1/12ms2296 KiB
4Futási hiba0/22ms2756 KiB
5Futási hiba0/12ms2956 KiB
6Elfogadva2/22ms3068 KiB
7Elfogadva2/23ms3184 KiB
8Elfogadva2/24ms3676 KiB
9Elfogadva2/23ms3464 KiB
10Elfogadva2/24ms3632 KiB
11Elfogadva2/213ms4324 KiB
12Elfogadva3/314ms4488 KiB
13Elfogadva3/314ms4876 KiB
14Elfogadva3/314ms4968 KiB
15Hibás válasz0/314ms5268 KiB
16Elfogadva3/314ms5376 KiB
17Elfogadva3/326ms6564 KiB
18Elfogadva3/346ms8020 KiB
19Hibás válasz0/346ms8292 KiB