19052022-12-08 21:21:55sztomiUtazás (40)cpp17Hibás válasz 20/4046ms8184 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]] = true;
    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
base20/40
1Elfogadva0/03ms2104 KiB
2Elfogadva0/035ms8184 KiB
3Hibás válasz0/12ms2188 KiB
4Futási hiba0/22ms2496 KiB
5Futási hiba0/12ms2744 KiB
6Elfogadva2/22ms3000 KiB
7Elfogadva2/23ms3036 KiB
8Hibás válasz0/24ms3568 KiB
9Elfogadva2/23ms3268 KiB
10Elfogadva2/24ms3520 KiB
11Hibás válasz0/213ms4412 KiB
12Elfogadva3/314ms4524 KiB
13Elfogadva3/314ms4976 KiB
14Hibás válasz0/314ms5000 KiB
15Hibás válasz0/314ms5324 KiB
16Elfogadva3/314ms5296 KiB
17Elfogadva3/326ms6308 KiB
18Hibás válasz0/346ms7772 KiB
19Hibás válasz0/346ms7760 KiB