제출 #1327315

#제출 시각아이디문제언어결과실행 시간메모리
1327315dianaValley (BOI19_valley)C++20
9 / 100
2 ms332 KiB
#include <bits/stdc++.h>
#define pii pair<int, int>
#define fi first
#define se second
#define ll long long
using namespace std;
int n, s, q, e, bc;
const int N = 105;
const ll M = 1e17;
bool sh[N];
int cel[N][N];
pii c[N];

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

    cin >> n >> s >> q >> e;
    for(int i=1; i<n; i++)
    {
        int u, v, w; cin >> u >> v >> w;
        cel[u][v] = cel[v][u] = w;
        c[i] = {u, v};
    }
    for(int i=0; i<s; i++)
    {
        int c; cin >> c;
        sh[c] = 1;
    }
    while(q--)
    {
        int r; cin >> bc >> r;
        bool es = 0, sf = 0, sf2 = 0;
        ll sum = 0, sum2 = 0;
        for(int i=r; i<=n; i++)
        {
            if(i == e)
            {
                es = 1;
                break;
            }
            if(sh[i]) sf = 1;
            if(c[bc] == make_pair(i, i+1) ||
               c[bc] == make_pair(i+1, i))
                break;
            if(!sf) sum += cel[i][i+1];
        }
        for(int i=r; i>=1; i--)
        {
            if(i == e)
            {
                es = 1;
                break;
            }
            if(sh[i]) sf2 = 1;
            if(c[bc] == make_pair(i, i-1) ||
               c[bc] == make_pair(i-1, i))
                break;
            if(!sf2) sum2 += cel[i][i-1];
        }
        if(es) cout << "escaped\n";
        else if(!sf2 && !sf) cout << "oo\n";
        else
        {
            if(sf && sf2) cout << min(sum, sum2);
            else if(sf) cout << sum;
            else cout << sum2;
            cout << '\n';
        }
    }

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...