2개의 댓글이 있습니다.
-
-
porcosedol -
ㅠㅠ
10년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
ㅠㅠ
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
porcosedol
[[problem:JAEHACHERRY]]
재하와 버찌씨 여덟개 문제를 별로 어렵지 않게 생각했는데 오답만 내다가 거의 1년이 다되가고 있습니다. 첨부한 코드는 bfs 탐색해서 한 점에서 다른 점까지 가격 비율을 구했는데 오답입니다. 아.. 어디에 버그가 있을까요? 제발 도와주세요.
~~~ c++
#include
#include
#include
#include
const int MAX_WIDTH = 8; make_relations(int size) { visited(size, false); relations(size); q;
double board[8][8];
vector
vector
vector
relations[0] = 1;
visited[0] = true;
queue
q.push(0);
while (!q.empty()) {
auto p = q.front();
q.pop();
for (int i = 0; i < size; i++) {
if (visited[i] == false && board[p][i] > 0) {
visited[i] = true;
relations[i] = relations[p] * board[p][i];
q.push(i);
}
}
}
return relations;
}
int main() id_to_name; name_to_id;> v;
{
//freopen("sample_input.txt", "r", stdin);
//setbuf(stdout, NULL);
int test_num;
cin >> test_num;
while (test_num--) {
for (int i = 0; i < MAX_WIDTH; i++) {
for (int j = 0; j < MAX_WIDTH; j++) {
board[i][j] = 0;
}
}
map
map
int trade_num;
cin >> trade_num;
int id = 0;
for (int i = 0; i < trade_num; i++) {
string name1, name2;
double val1, val2;
cin >> name1 >> val1 >> name2 >> val2;
int src, target;
if (name_to_id.count(name1) > 0) {
src = name_to_id[name1];
}
else {
src = id;
name_to_id[name1] = id;
id_to_name[src] = name1;
id++;
}
if (name_to_id.count(name2) > 0) {
target = name_to_id[name2];
}
else {
target = id;
name_to_id[name2] = id;
id_to_name[target] = name2;
id++;
}
board[src][target] = val2 / val1;
board[target][src] = val1 / val2;
}
auto relations = make_relations(name_to_id.size());
vector
for (int i = 0; i < relations.size(); i++) {
v.push_back({ relations.at(i), id_to_name.at(i) });
}
sort(v.begin(), v.end());
for (auto p : v)
cout << p.second << " ";
cout << endl;
}
}
10년 전