답안 #328446

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
328446 2020-11-16T15:56:12 Z MarcoMeijer Love Polygon (BOI18_polygon) C++14
29 / 100
298 ms 60140 KB
#include <bits/stdc++.h>
using namespace std;
 
// macros
typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
typedef pair<ll, ll> lll;
typedef tuple<int, int, int> iii;
typedef vector<int> vi;
typedef vector<ii> vii;
typedef vector<iii> viii;
typedef vector<ll> vll;
typedef vector<lll> vlll;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define RE(a,c) REP(a,0,c)
#define RE1(a,c) REP(a,1,c+1)
#define REI(a,b,c) REP(a,b,c+1)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define FOR(a,b) for(auto& a : b)
#define all(a) a.begin(), a.end()
#define INF 1e18
#define EPS 1e-9
#define pb push_back
#define popb pop_back
#define fi first
#define se second
#define sz size()
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
 
// input
template<class T> void IN(T& x) {cin >> x;}
template<class H, class... T> void IN(H& h, T&... t) {IN(h); IN(t...); }
 
// output
template<class T1, class T2> void OUT(const pair<T1,T2>& x);
template<class T> void OUT(const vector<T>& x);
template<class T> void OUT(const T& x) {cout << x;}
template<class H, class... T> void OUT(const H& h, const T&... t) {OUT(h); OUT(t...); }
template<class T1, class T2> void OUT(const pair<T1,T2>& x) {OUT(x.fi,' ',x.se);}
template<class T> void OUT(const vector<T>& x) {RE(i,x.size()) OUT(i==0?"":" ",x[i]);}
template<class... T> void OUTL(const T&... t) {OUT(t..., "\n"); }
template<class H> void OUTLS(const H& h) {OUTL(h); }
template<class H, class... T> void OUTLS(const H& h, const T&... t) {OUT(h,' '); OUTLS(t...); }
 
//===================//
//  Added libraries  //
//===================//
 
//===================//
//end added libraries//
//===================//
 
void program();
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    program();
}
 
 
//===================//
//   begin program   //
//===================//
 
const int MX = 5e5;

int n;
string t[MX];
map<string,int> mp;
int nxt[MX];
int in[MX];
set<int> pre[MX];

void program() {
    IN(n);
    RE(i,n) {
        string s; IN(s,t[i]);
        mp[s] = i;
    }
    if(n%2) {
        OUTL(-1);
        return;
    }
    RE(i,n) nxt[i] = mp[t[i]];
    RE(i,n) in[nxt[i]]++;
    RE(i,n) pre[nxt[i]].insert(i);

    queue<int> q;
    RE(i,n) if(in[i]==0) q.push(i);
    
    set<int> nRem;
    RE(i,n) nRem.insert(i);
    int remove = 0;
    int ans = 0;
    while(!nRem.empty()) {
        int u=0;
        if(!q.empty()) {
            u = q.front(), q.pop();
        } else {
            u = *nRem.begin();
        }
        int v=nxt[u];
        nRem.erase(u);
        if(!nRem.count(v)){
            ans++;
            continue;
        }
        nRem.erase(v);
        if(nxt[v] == u) continue;
        ans++;
        in[nxt[v]]--;
        if(in[nxt[v]] == 0) q.push(nxt[v]);
    }
    OUTL(ans);
}

Compilation message

polygon.cpp: In function 'void program()':
polygon.cpp:95:9: warning: unused variable 'remove' [-Wunused-variable]
   95 |     int remove = 0;
      |         ^~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 24 ms 39552 KB Output is correct
2 Correct 23 ms 39532 KB Output is correct
3 Correct 23 ms 39552 KB Output is correct
4 Correct 23 ms 39532 KB Output is correct
5 Correct 22 ms 39532 KB Output is correct
6 Correct 24 ms 39552 KB Output is correct
7 Correct 25 ms 39532 KB Output is correct
8 Incorrect 23 ms 39532 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 22 ms 39532 KB Output is correct
2 Correct 22 ms 39532 KB Output is correct
3 Correct 24 ms 39532 KB Output is correct
4 Incorrect 258 ms 59628 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 297 ms 59756 KB Output is correct
2 Correct 261 ms 59756 KB Output is correct
3 Correct 206 ms 59628 KB Output is correct
4 Correct 119 ms 49516 KB Output is correct
5 Correct 298 ms 59756 KB Output is correct
6 Correct 250 ms 59884 KB Output is correct
7 Correct 273 ms 60012 KB Output is correct
8 Correct 253 ms 59756 KB Output is correct
9 Correct 248 ms 60140 KB Output is correct
10 Correct 195 ms 59628 KB Output is correct
11 Correct 24 ms 39532 KB Output is correct
12 Correct 23 ms 39532 KB Output is correct
13 Correct 27 ms 39532 KB Output is correct
14 Correct 23 ms 39660 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 24 ms 39552 KB Output is correct
2 Correct 23 ms 39532 KB Output is correct
3 Correct 23 ms 39552 KB Output is correct
4 Correct 23 ms 39532 KB Output is correct
5 Correct 22 ms 39532 KB Output is correct
6 Correct 24 ms 39552 KB Output is correct
7 Correct 25 ms 39532 KB Output is correct
8 Incorrect 23 ms 39532 KB Output isn't correct
9 Halted 0 ms 0 KB -