제출 #1059713

#제출 시각아이디문제언어결과실행 시간메모리
1059713Cyanberry열대 식물원 (Tropical Garden) (IOI11_garden)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

void count_routes(int fountains, int pathCount, int dest, vector<vector<int>> paths, int groupCount, vector<int> groups) {
    vector<vector<int>> graf(pathCount, vector<int>{});
    for (int i = 0; i < paths.size(); ++i) {
        graf[paths[i][0]].push_back(paths[i][1]);
        graf[paths[i][1]].push_back(paths[i][0]);
    }
    for (vector<int> i : graf) {
        for (int j : i) {
            // cout<<j<<' ';
        }
        // cout<<'\n';
    }
    vector<int> lengths(pathCount, 0);
    int destCycle;
    for (int i = 0; i < pathCount; ++i) {
        if (lengths[i] == 0) {
            int counting = -1, curr = i, prev = -1, dist;
            // cout<<'+'<<i<<'\n';
            while (curr != dest) {
                lengths[curr] = counting;
                if (prev != graf[curr][0] || graf[curr].size() == 1) {
                    prev = curr;
                    curr = graf[curr][0];
                } else {
                    prev = curr;
                    curr = graf[curr][1];
                }
                // cout<<counting<<'\n';
                --counting;
                if (lengths[curr] > 0) {
                    dist = lengths[curr] - counting + 1;
                    break;
                }
                if (lengths[curr] < 0 && lengths[curr] - counting > 2) {
                    dist = -1;
                    break;
                }
                if (curr == dest) {
                    dist = -counting;
                    break;
                }
                
            }
            curr = i, prev = -1;
            if (dist < 0) continue;
            while (curr != dest) {
                if (lengths[curr] < 0) lengths[curr] += dist;
                if (prev != graf[curr][0] || graf[curr].size() == 1) {
                    prev = curr;
                    curr = graf[curr][0];
                } else {
                    prev = curr;
                    lengths[curr] += 2;
                    curr = graf[curr][1];
                }
                if (lengths[curr] > 0) {
                    break;
                }
                if (curr == dest) {
                    break;
                }
            }
        }
    }
    int counting = 0, curr = dest, prev = -1;
    while (true) {
        if (prev != graf[curr][0] || graf[curr].size() == 1) {
            prev = curr;
            curr = graf[curr][0];
        } else {
            prev = curr;
            curr = graf[curr][1];
        }
        ++counting;
        if (curr == dest) {
            break;
        }
    }
    vector<int> answers(150010, 0);
    for (int i = 0; i < lengths.size(); ++i) {
        if (lengths[i] > 0) ++answers[lengths[i]];
    }
    for (int i = 0; i < counting; ++i) {
        for (int j = i; j < 150010; j += counting) {
            if (j > i) {
                answers[j] += answers[j - counting];
            }
        }
    }
    for (int i : groups) {
        if (i < 150010) answer(answers[i]);
        else {
            i -= 150010;
            i %= counting;
            i -= counting;
            i += 150010;
            answer(answers[i]);
        }
    }
}

컴파일 시 표준 에러 (stderr) 메시지

garden.cpp: In function 'void count_routes(int, int, int, std::vector<std::vector<int> >, int, std::vector<int>)':
garden.cpp:6:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 |     for (int i = 0; i < paths.size(); ++i) {
      |                     ~~^~~~~~~~~~~~~~
garden.cpp:11:18: warning: unused variable 'j' [-Wunused-variable]
   11 |         for (int j : i) {
      |                  ^
garden.cpp:83:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |     for (int i = 0; i < lengths.size(); ++i) {
      |                     ~~^~~~~~~~~~~~~~~~
garden.cpp:94:25: error: 'answer' was not declared in this scope; did you mean 'answers'?
   94 |         if (i < 150010) answer(answers[i]);
      |                         ^~~~~~
      |                         answers
garden.cpp:100:13: error: 'answer' was not declared in this scope; did you mean 'answers'?
  100 |             answer(answers[i]);
      |             ^~~~~~
      |             answers
garden.cpp:17:9: warning: unused variable 'destCycle' [-Wunused-variable]
   17 |     int destCycle;
      |         ^~~~~~~~~