재기전 탐색

6467 단어 C++14
abc165 c


이 현명한
int n, m, q; 
int a[55], b[55], c[55], d[55];
int ans = 0;
void dfs(vector<int>&v) {
    if (v.size() == n) {
        int s = 0;
        for (int i = 0; i < q; ++i) {
            if (v[b[i]] - v[a[i]] == c[i])s += d[i];
        }
        ans = max(ans, s);
        return;
    }
    int t = 1;
    if (!v.empty())t = v.back();
    for (int i = t; i <= m; ++i) {
        v.push_back(i);
        dfs(v);
        v.pop_back();
    }
}

int main() {
    cin >> n >> m >> q;
    for (int i = 0; i < q; ++i) {
        cin >> a[i] >> b[i] >> c[i] >> d[i];
        a[i]--, b[i]--;
    }
    vector<int>v;
    dfs(v);
    cout << ans << endl;
    return 0;
}

ex 755,lunlunnumber,string equivalence

좋은 웹페이지 즐겨찾기