253602026-02-19 13:50:04Leventusz09Társasjátékcpp17Hibás válasz 55/100273ms17548 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 = -1;
        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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva4ms4916 KiB
2Elfogadva252ms10036 KiB
subtask20/10
3Elfogadva4ms4920 KiB
4Elfogadva4ms4916 KiB
5Elfogadva6ms5108 KiB
6Elfogadva6ms4916 KiB
7Hibás válasz4ms4916 KiB
subtask315/15
8Elfogadva4ms4916 KiB
9Elfogadva6ms4916 KiB
10Elfogadva107ms7616 KiB
11Elfogadva101ms7456 KiB
12Elfogadva103ms7448 KiB
13Elfogadva216ms10036 KiB
14Elfogadva222ms9956 KiB
15Elfogadva223ms10060 KiB
16Elfogadva204ms9948 KiB
17Elfogadva204ms10036 KiB
18Elfogadva140ms12708 KiB
19Elfogadva200ms10292 KiB
subtask440/40
20Elfogadva4ms5108 KiB
21Elfogadva7ms4916 KiB
22Elfogadva104ms7476 KiB
23Elfogadva170ms9012 KiB
24Elfogadva223ms9972 KiB
25Elfogadva209ms10076 KiB
26Elfogadva209ms10036 KiB
27Elfogadva142ms12832 KiB
28Elfogadva204ms10292 KiB
subtask50/35
29Elfogadva4ms4916 KiB
30Elfogadva268ms10036 KiB
31Elfogadva4ms4920 KiB
32Elfogadva4ms4916 KiB
33Elfogadva6ms5108 KiB
34Elfogadva6ms4916 KiB
35Hibás válasz4ms4916 KiB
36Elfogadva4ms4916 KiB
37Elfogadva6ms4916 KiB
38Elfogadva107ms7616 KiB
39Elfogadva101ms7456 KiB
40Elfogadva103ms7448 KiB
41Elfogadva216ms10036 KiB
42Elfogadva222ms9956 KiB
43Elfogadva223ms10060 KiB
44Elfogadva204ms9948 KiB
45Elfogadva204ms10036 KiB
46Elfogadva140ms12708 KiB
47Elfogadva200ms10292 KiB
48Elfogadva4ms5108 KiB
49Elfogadva7ms4916 KiB
50Elfogadva104ms7476 KiB
51Elfogadva170ms9012 KiB
52Elfogadva223ms9972 KiB
53Elfogadva209ms10076 KiB
54Elfogadva209ms10036 KiB
55Elfogadva142ms12832 KiB
56Elfogadva204ms10292 KiB
57Elfogadva7ms5108 KiB
58Hibás válasz17ms5172 KiB
59Elfogadva16ms5224 KiB
60Elfogadva257ms10020 KiB
61Elfogadva273ms10108 KiB
62Elfogadva261ms10104 KiB
63Elfogadva268ms9904 KiB
64Hibás válasz204ms17548 KiB