답안 #831591

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
831591 2023-08-20T11:00:23 Z Minindu206 분수 공원 (IOI21_parks) C++17
0 / 100
6 ms 13580 KB
#include "parks.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 1;
vector<int> adj[MAXN];
void dfs(int node, vector<int> &vis)
{
    vis[node] = 1;
    for(auto a:adj[node])
        if(!vis[node])
            dfs(a, vis);
}
int construct_roads(vector<int> x, vector<int> y)
{
    int n = x.size();
    vector<vector<int>> ft(10, vector<int>(MAXN, -1));
    for (int i = 0; i < n; i++)
        ft[x[i]][y[i]] = i;
    vector<pair<int, int>> dir{{2, 0}, {-2, 0}, {0, 2}, {0, -2}};
    vector<int> u, v, a, b;
    for(int i=0;i<n;i++)
    {
        for(auto d:dir)
        {
            int cx = x[i] + d.first, cy = y[i] + d.second;
            if(ft[cx][cy] == -1)
                continue;
            adj[i].push_back(ft[cx][cy]);
            if(ft[cx][cy] > i)
            {
                u.push_back(i);
                v.push_back(ft[cx][cy]);
                if(d.second == 0)
                {
                    a.push_back(x[i] + cx >> 1);
                    b.push_back(y[i] - 1);
                }
                else
                {
                    if(x[i] == 2)
                    {
                        a.push_back(x[i] - 1);
                        b.push_back(y[i] + cy >> 1); 
                    }
                    else
                    {
                        a.push_back(x[i] + 1);
                        b.push_back(y[i] + cy >> 1);
                    }
                }
            }
        }
    }
    vector<int> vis(n, 0);
    dfs(0, vis);
    for(int i=0;i<n;i++)
        if(!vis[i])
            return 0;
    build(u, v, a, b);
    return 1;
}

Compilation message

parks.cpp: In function 'int construct_roads(std::vector<int>, std::vector<int>)':
parks.cpp:35:38: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   35 |                     a.push_back(x[i] + cx >> 1);
parks.cpp:43:42: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   43 |                         b.push_back(y[i] + cy >> 1);
parks.cpp:48:42: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   48 |                         b.push_back(y[i] + cy >> 1);
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 13524 KB Output is correct
2 Incorrect 6 ms 13580 KB Solution announced impossible, but it is possible.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 13524 KB Output is correct
2 Incorrect 6 ms 13580 KB Solution announced impossible, but it is possible.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 13524 KB Output is correct
2 Incorrect 6 ms 13580 KB Solution announced impossible, but it is possible.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 13524 KB Output is correct
2 Incorrect 6 ms 13580 KB Solution announced impossible, but it is possible.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 13524 KB Output is correct
2 Incorrect 6 ms 13580 KB Solution announced impossible, but it is possible.
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 13524 KB Output is correct
2 Incorrect 6 ms 13580 KB Solution announced impossible, but it is possible.
3 Halted 0 ms 0 KB -