7505 2024. 01. 09 11:43:58 MagyarKendeSZLG Tom és Jerry 1 (80) cpp17 Időlimit túllépés 0/80 600ms 63784 KiB

#include <bits/stdc++.h>

#pragma region Utility

#define speed cin.tie(0); ios::sync_with_stdio(0)
#define cinv(v) for (auto& e : v) cin >> e;

#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define size(v) (int)v.size()
#define has(s, e) s.count(e)

#define max_index(v) max_element(all(v)) - v.begin()
#define min_index(v) min_element(all(v)) - v.begin()
#define smax(x, y) x = max(x, y)
#define smin(x, y) x = min(x, y)

#define sum(v) accumulate(all(v), 0)
#define product(v, T) accumulate(all(v), 1, multiplies<T>())

using namespace std;
using ll = long long;
using point = array<int, 2>;

int max(point p) { return max(p[0], p[1]); }
int min(point p) { return min(p[0], p[1]); }

template <typename T>
vector<T> prefix_sum(const vector<T>& v) {
    vector<T> result(size(v));
    partial_sum(all(v), result.begin());
    return result;
}

#pragma endregion

int N, M, T, P, E;
vector<vector<point>> g;

void floyd_warshall(int min_width, vector<vector<int>>& distS) {
    distS.assign(N + 1, vector<int>(N + 1, INT_MAX));

    for (int i = 1; i <= N; i++) {
        distS[i][i] = 0;
    }

    for (int i = 1; i <= N; i++) {
        for (auto [j, w] : g[i]) {
            if (min_width <= w) {
                distS[i][j] = 1;
                distS[j][i] = 1;
            }
        }
    }

    for (int k = 1; k <= N; k++) {
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= N; j++) {
                if (distS[i][k] != INT_MAX && distS[k][j] != INT_MAX) {
                    smin(distS[i][j],
                         distS[i][k] +
                         distS[k][j]
                    );
                }
            }
        }
    }
}

int main() {
    speed;

    cin >> N >> M >> T >> P >> E;

    g.resize(N + 1);

    while (M--) {
        int A, B, S;
        cin >> A >> B >> S;
    
        g[A].push_back({B, S});
        g[B].push_back({A, S});
    }

    vector<vector<int>> tom_distS, jerry_distS;

    floyd_warshall(2, tom_distS);
    floyd_warshall(1, jerry_distS);

    while (P--) {
        int K;
        cin >> K;
        // just checking whether I fit in the time limit or not
        cout << (K & 1 ? "IGEN" : "NEM") << '\n';
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 0/80
1 Elfogadva 0/0 3ms 1828 KiB
2 Időlimit túllépés 0/0 600ms 5432 KiB
3 Hibás válasz 0/4 3ms 2228 KiB
4 Hibás válasz 0/4 3ms 2472 KiB
5 Hibás válasz 0/4 6ms 2640 KiB
6 Hibás válasz 0/4 6ms 2900 KiB
7 Hibás válasz 0/4 381ms 6864 KiB
8 Időlimit túllépés 0/4 560ms 6248 KiB
9 Időlimit túllépés 0/4 574ms 6124 KiB
10 Időlimit túllépés 0/4 563ms 18248 KiB
11 Időlimit túllépés 0/4 568ms 18580 KiB
12 Futási hiba 0/4 39ms 63784 KiB
13 Futási hiba 0/4 41ms 63740 KiB
14 Futási hiba 0/4 50ms 63692 KiB
15 Futási hiba 0/4 57ms 63688 KiB
16 Futási hiba 0/4 57ms 63532 KiB
17 Futási hiba 0/4 71ms 63440 KiB
18 Futási hiba 0/4 54ms 63432 KiB
19 Futási hiba 0/4 54ms 63416 KiB
20 Futási hiba 0/4 54ms 63412 KiB
21 Futási hiba 0/4 54ms 63408 KiB
22 Futási hiba 0/4 70ms 63400 KiB