253582026-02-19 13:48:15Leventusz09Társasjátékcpp17Hibás válasz 0/100272ms17520 KiB
#include <iostream>
#include <limits.h>
#include <vector>
#define int long long

using namespace std;

struct Edge {
    int to;
    int cost;
};

struct Node {
    bool ty = 0;
    bool szomoru;
    int c = -1, oc = -1;
    vector<Edge> et;
} G[100'000];

void cszs(const int&index){
    if(G[index].ty) return;
    G[index].szomoru = 1;
    for(const Edge&e:G[index].et){
        cszs(e.to);
        if(G[e.to].szomoru) G[index].szomoru = 0;
    }

    G[index].ty = 1;
}

void con(const int& index){
    if(G[index].c >= 0) return;
    if(G[index].et.size() == 0){
        G[index].c = 0;
        G[index].oc = 0;
        return;
    }
    if(G[index].szomoru){
        Edge *mt = &G[index].et[1];
        int mc = mt->cost;
        for(Edge& e: G[index].et){
            con(e.to);
            if(G[e.to].c > mc){
                mt = &e;
                mc = G[e.to].c;
            }
        }
        G[index].c = G[mt->to].oc + mt->cost;
        G[index].oc = mc;
        return;
    }
    int mc = LLONG_MAX;
    Edge *mt = &G[index].et[0];
    for(Edge& e: G[index].et){
        if(!G[e.to].szomoru) continue;
        con(e.to);
        if(G[e.to].oc < mc){
            mt = &e;
            mc = G[e.to].oc;
        }
    }
    G[index].c = mc + mt->cost;
    G[index].oc = G[mt->to].c;
}

signed main(){
    int N, M;
    cin >> N >> M;

    for(int i=0; i<M; i++){
        int U, V, W;
        cin >> U >> V >> W;
        U--; V--;
        Edge e;
        e.to = V;
        e.cost = W;
        G[U].et.push_back(e);
    }

    cszs(0);
    con(0);
    if(G[0].szomoru) cout << "Bob" << endl << G[0].oc << endl;
    else cout << "Alice" << endl << G[0].c << endl;

    /*for(int i=0; i<N; i++){
        cout << i +1<< ": " << G[i].szomoru << "\t" << G[i].c << " " << G[i].oc << endl;
    }*/
   return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva4ms4916 KiB
2Elfogadva263ms10144 KiB
subtask20/10
3Elfogadva6ms4916 KiB
4Elfogadva4ms4972 KiB
5Elfogadva6ms4916 KiB
6Hibás válasz4ms4916 KiB
7Hibás válasz4ms4876 KiB
subtask30/15
8Hibás válasz4ms4916 KiB
9Elfogadva4ms4916 KiB
10Elfogadva109ms7612 KiB
11Hibás válasz108ms7492 KiB
12Hibás válasz101ms7496 KiB
13Elfogadva203ms9956 KiB
14Elfogadva224ms10048 KiB
15Hibás válasz204ms10128 KiB
16Hibás válasz226ms10004 KiB
17Hibás válasz203ms10036 KiB
18Hibás válasz137ms12912 KiB
19Hibás válasz207ms10292 KiB
subtask40/40
20Hibás válasz6ms5108 KiB
21Elfogadva6ms5152 KiB
22Hibás válasz104ms7476 KiB
23Hibás válasz162ms9012 KiB
24Hibás válasz228ms10036 KiB
25Hibás válasz225ms10124 KiB
26Elfogadva210ms10080 KiB
27Hibás válasz138ms12708 KiB
28Elfogadva204ms10304 KiB
subtask50/35
29Elfogadva6ms4916 KiB
30Elfogadva257ms10132 KiB
31Elfogadva6ms4916 KiB
32Elfogadva4ms4972 KiB
33Elfogadva6ms4916 KiB
34Hibás válasz4ms4916 KiB
35Hibás válasz4ms4876 KiB
36Hibás válasz4ms4916 KiB
37Elfogadva4ms4916 KiB
38Elfogadva109ms7612 KiB
39Hibás válasz108ms7492 KiB
40Hibás válasz101ms7496 KiB
41Elfogadva203ms9956 KiB
42Elfogadva224ms10048 KiB
43Hibás válasz204ms10128 KiB
44Hibás válasz226ms10004 KiB
45Hibás válasz203ms10036 KiB
46Hibás válasz137ms12912 KiB
47Hibás válasz207ms10292 KiB
48Hibás válasz6ms5108 KiB
49Elfogadva6ms5152 KiB
50Hibás válasz104ms7476 KiB
51Hibás válasz162ms9012 KiB
52Hibás válasz228ms10036 KiB
53Hibás válasz225ms10124 KiB
54Elfogadva210ms10080 KiB
55Hibás válasz138ms12708 KiB
56Elfogadva204ms10304 KiB
57Elfogadva8ms4916 KiB
58Hibás válasz17ms5364 KiB
59Elfogadva17ms5172 KiB
60Hibás válasz268ms10036 KiB
61Hibás válasz261ms10116 KiB
62Elfogadva272ms10036 KiB
63Elfogadva259ms10036 KiB
64Hibás válasz209ms17520 KiB