64352023-11-29 11:39:42GhostLegkisebb nem oszthatócpp17Időlimit túllépés 10/1003.084s15764 KiB
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <stack>

using namespace std;

int main()
{
    int n, temp1, temp2, i;
    cin >> n;

    vector<int> value(n);
    for (i = 0; i < n; i++) {
        cin >> value[i];
    }

    vector<vector<int>> map(n);
    for (i = 0; i < (n - 1); i++) {
        cin >> temp1 >> temp2;
        temp1--; temp2--;
        map[temp1].push_back(temp2);
        map[temp2].push_back(temp1);
    }

    int k, goal, start, j;
    cin >> k;
    set<int> been;
    queue<int> steps;
    vector<int> last(n);
    for (i = 0; i < k; i++) {
        cin >> start >> goal;
        start--; goal--;
        last[start] = -1;

        been.clear();
        been.insert(start);
        steps.push(start);

        int node;
        while (steps.size() > 0) {
            node = steps.front();
            steps.pop();
            for (j = 0; j < map[node].size(); j++) {
                if (!been.count(map[node][j])) {
                    steps.push(map[node][j]);
                    last[map[node][j]] = node;
                }
            }
            been.insert(node);
        }

        bool correct = false;
        int out = 2;
        while (!correct) {
            node = goal;
            correct = true;
            while (node != -1) {
                if (out >= value[node]) {
                    if (out % value[node] == 0) {
                        correct = false;
                        break;
                    }
                    node = last[node];
                }
                else {
                    node = last[node];
                    continue;
                }
            }
            if (correct) {
                break;
            }
            if (++out % 2 == 0) {
                out++;
            }
        }

        cout << out << "\n";
    }
}

//9
//7 25 8 4 1000000 6 11 3 2
//5 7
//5 1
//5 6
//7 3
//1 2
//1 4
//6 8
//2 9
//3
//8 9
//3 8
//4 9
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1812 KiB
subtask25/5
2Elfogadva3ms2060 KiB
3Elfogadva3ms2272 KiB
4Elfogadva4ms2492 KiB
5Elfogadva30ms2676 KiB
6Elfogadva71ms2892 KiB
7Elfogadva208ms2988 KiB
8Elfogadva328ms3272 KiB
9Elfogadva330ms3228 KiB
10Elfogadva331ms3444 KiB
11Elfogadva333ms3652 KiB
subtask35/5
12Elfogadva3ms3660 KiB
13Elfogadva3ms3512 KiB
14Elfogadva4ms3520 KiB
15Elfogadva28ms3528 KiB
16Elfogadva68ms3552 KiB
17Elfogadva202ms3868 KiB
18Elfogadva326ms3964 KiB
19Elfogadva328ms4108 KiB
20Elfogadva326ms4308 KiB
21Elfogadva324ms4316 KiB
subtask40/10
22Időlimit túllépés3.065s4400 KiB
23Időlimit túllépés3.055s4700 KiB
24Időlimit túllépés3.066s9696 KiB
25Időlimit túllépés3.071s13444 KiB
26Időlimit túllépés3.062s15124 KiB
27Időlimit túllépés3.063s15072 KiB
subtask50/10
28Időlimit túllépés3.065s5060 KiB
29Időlimit túllépés3.055s5432 KiB
30Időlimit túllépés3.071s10192 KiB
31Időlimit túllépés3.066s13976 KiB
32Időlimit túllépés3.059s15316 KiB
33Időlimit túllépés3.078s15140 KiB
subtask60/10
34Elfogadva328ms5028 KiB
35Időlimit túllépés3.071s5224 KiB
36Időlimit túllépés3.049s6760 KiB
37Időlimit túllépés3.065s10316 KiB
38Időlimit túllépés3.051s13968 KiB
39Időlimit túllépés3.065s15216 KiB
40Időlimit túllépés3.073s15196 KiB
41Időlimit túllépés3.078s15328 KiB
subtask70/15
42Elfogadva326ms5288 KiB
43Időlimit túllépés3.066s5480 KiB
44Időlimit túllépés3.069s7084 KiB
45Időlimit túllépés3.071s10600 KiB
46Időlimit túllépés3.066s14268 KiB
47Időlimit túllépés3.072s15596 KiB
48Időlimit túllépés3.051s15596 KiB
49Időlimit túllépés3.072s15392 KiB
50Időlimit túllépés3.084s15564 KiB
51Időlimit túllépés3.075s13196 KiB
52Időlimit túllépés3.046s13232 KiB
53Időlimit túllépés3.058s13228 KiB
54Időlimit túllépés3.071s13016 KiB
55Időlimit túllépés3.055s13100 KiB
56Időlimit túllépés3.065s13188 KiB
subtask80/20
57Időlimit túllépés3.071s5528 KiB
58Időlimit túllépés3.039s6840 KiB
59Időlimit túllépés3.073s8292 KiB
60Időlimit túllépés3.065s10532 KiB
61Időlimit túllépés3.055s15208 KiB
62Időlimit túllépés3.049s15320 KiB
63Időlimit túllépés3.065s15280 KiB
64Időlimit túllépés3.065s15372 KiB
65Időlimit túllépés3.082s15348 KiB
66Időlimit túllépés3.078s15344 KiB
subtask90/25
67Időlimit túllépés3.071s5464 KiB
68Időlimit túllépés3.053s6860 KiB
69Időlimit túllépés3.075s8352 KiB
70Időlimit túllépés3.046s10804 KiB
71Időlimit túllépés3.079s15368 KiB
72Időlimit túllépés3.072s15556 KiB
73Időlimit túllépés3.059s15668 KiB
74Időlimit túllépés3.079s15536 KiB
75Időlimit túllépés3.026s15524 KiB
76Időlimit túllépés3.082s15636 KiB
77Időlimit túllépés3.059s15588 KiB
78Időlimit túllépés3.051s15584 KiB
79Időlimit túllépés3.059s15688 KiB
80Időlimit túllépés3.066s15684 KiB
81Időlimit túllépés3.062s15764 KiB
82Időlimit túllépés3.073s15376 KiB
83Időlimit túllépés3.062s15660 KiB