253542026-02-19 13:03:02Leventusz09Társasjátékcpp17Wrong answer 55/100277ms17572 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){
        int mc = 0;
        Edge *mt = &G[index].et[1];
        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;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted4ms4916 KiB
2Accepted259ms9924 KiB
subtask20/10
3Accepted4ms5108 KiB
4Accepted4ms5108 KiB
5Accepted6ms4916 KiB
6Accepted6ms4916 KiB
7Wrong answer4ms4932 KiB
subtask315/15
8Accepted4ms4916 KiB
9Accepted6ms4916 KiB
10Accepted101ms7476 KiB
11Accepted107ms7372 KiB
12Accepted103ms7476 KiB
13Accepted214ms9912 KiB
14Accepted209ms9968 KiB
15Accepted207ms10028 KiB
16Accepted218ms10116 KiB
17Accepted216ms10036 KiB
18Accepted137ms12712 KiB
19Accepted200ms10160 KiB
subtask440/40
20Accepted4ms4916 KiB
21Accepted7ms5100 KiB
22Accepted109ms7484 KiB
23Accepted160ms8884 KiB
24Accepted211ms10036 KiB
25Accepted231ms9948 KiB
26Accepted219ms10036 KiB
27Accepted138ms12828 KiB
28Accepted202ms10292 KiB
subtask50/35
29Accepted6ms5180 KiB
30Accepted256ms10036 KiB
31Accepted4ms5108 KiB
32Accepted4ms5108 KiB
33Accepted6ms4916 KiB
34Accepted6ms4916 KiB
35Wrong answer4ms4932 KiB
36Accepted4ms4916 KiB
37Accepted6ms4916 KiB
38Accepted101ms7476 KiB
39Accepted107ms7372 KiB
40Accepted103ms7476 KiB
41Accepted214ms9912 KiB
42Accepted209ms9968 KiB
43Accepted207ms10028 KiB
44Accepted218ms10116 KiB
45Accepted216ms10036 KiB
46Accepted137ms12712 KiB
47Accepted200ms10160 KiB
48Accepted4ms4916 KiB
49Accepted7ms5100 KiB
50Accepted109ms7484 KiB
51Accepted160ms8884 KiB
52Accepted211ms10036 KiB
53Accepted231ms9948 KiB
54Accepted219ms10036 KiB
55Accepted138ms12828 KiB
56Accepted202ms10292 KiB
57Accepted7ms4916 KiB
58Wrong answer17ms5172 KiB
59Accepted16ms5172 KiB
60Accepted259ms9980 KiB
61Accepted275ms9880 KiB
62Accepted277ms9936 KiB
63Accepted259ms9920 KiB
64Wrong answer206ms17572 KiB