19672022-12-12 17:14:52sztomiUtazás (40)cpp17Elfogadva 40/4046ms8244 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+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
base40/40
1Elfogadva0/03ms1828 KiB
2Elfogadva0/034ms8244 KiB
3Elfogadva1/12ms2264 KiB
4Elfogadva2/22ms2332 KiB
5Elfogadva1/12ms2532 KiB
6Elfogadva2/22ms2748 KiB
7Elfogadva2/23ms3164 KiB
8Elfogadva2/24ms3860 KiB
9Elfogadva2/23ms3392 KiB
10Elfogadva2/24ms3532 KiB
11Elfogadva2/213ms4248 KiB
12Elfogadva3/314ms4556 KiB
13Elfogadva3/314ms4832 KiB
14Elfogadva3/314ms4920 KiB
15Elfogadva3/314ms4968 KiB
16Elfogadva3/314ms5128 KiB
17Elfogadva3/326ms6316 KiB
18Elfogadva3/346ms7776 KiB
19Elfogadva3/346ms7876 KiB