답안 #947427

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
947427 2024-03-16T07:07:26 Z phoenix0423 길고양이 (JOI20_stray) C++17
0 / 100
24 ms 11304 KB
#include<bits/stdc++.h>
using namespace std;
typedef pair<int, int> pll;
#define pb push_back
#define eb emplace_back
const int INF = 1e9;
#include "Anthony.h"

vector<int> Mark(int n, int m, int a, int b, vector<int> u, vector<int> v){
    vector<vector<pll>> adj(n);
    vector<int> dist(n, INF), deg(n);
    dist[0] = 0;
    for(int i = 0; i < m; i++){
        adj[u[i]].eb(v[i], i);
        adj[v[i]].eb(u[i], i);
        deg[u[i]] ++, deg[v[i]] ++;
    }
    vector<int> color(m, -1);
    vector<int> bd(n);
    bd[0] = 0;
    queue<pll> q;
    q.push({0, 0});
    if(a >= 3){
        while(!q.empty()){
            auto [pos, lst] = q.front(); q.pop();
            for(auto [x, id] : adj[pos]){
                if(color[id] != -1) continue;
                if(dist[x] != INF){
                  if(dist[x] >= dist[pos]) color[id] = (lst + 1) % a;
                  else color[id] = lst;
                  continue;
                }
                // cout<<"do : "<<pos<<" "<<x<<" "<<lst<<"\n";
                dist[x] = dist[pos] + 1;
                color[id] = (lst + 1) % a;
                q.push({x, color[id]});
            }
        }
        cout<<"dist : ";
        for(auto x : dist) cout<<x<<" ";
        cout<<"\n";
    }
    else{
        string ck = "121221";
        while(!q.empty()){
            auto [pos, lst] = q.front(); q.pop();
            int put;
            if(deg[pos] > 2){
                if(ck[lst] == '1') put = 1;
                else put = 0;
            }
            else put = (lst + 1) % 6;
            for(auto [x, id] : adj[pos]){
                if(dist[x] != INF) continue;
                dist[x] = dist[pos] + 1;
                color[id] = (ck[put] - '1');
                q.push({x, put});
            }
        }
    }
    return color;
}

// signed main(void){
//     int n, m, a, b, s;
//     cin>>n>>m>>a>>b>>s;
//     vector<int> u(m), v(m);
//     for(int i = 0; i < m; i++) cin>>u[i]>>v[i];
//     auto c = Mark(n, m, a, b, u, v);
//     for(auto x : c) cout<<x<<" ";
//     cout<<"\n";
// }
#include "Catherine.h"
#include <vector>
#include<bits/stdc++.h>
using namespace std;

int A, B, lst = -1, move = 0, ok = 0;
string ps = "";

void Init(int a, int b){
    A = a, B = b;
}

int Move(vector<int> y){
    // cout<<"ck : "<<A<<" "<<B<<"\n";
    if(lst != -1) y[lst]++;
    int deg = accumulate(y.begin(), y.end(), 0);
    if(deg == 1){
        return max_element(y.begin(), y.end()) - y.begin();
    }
    if(true){
        for(int i = 0; i < A; i++){
            // cout<<"try : "<<y[i]<<" "<<y[(i + 1) % A]<<"\n";
            if(y[i] == 1 && y[(i + 1) % A]){
                return i;
            }
        }
    }
    return 0;
    if(deg > 2){
        if(lst) return lst ^ 1;
        else return y[0] != 1;
    }
    if(ok){

    }
}
/*
7 6 3 6 1
0 2
0 4
1 2
1 3
1 5
4 6
*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 3088 KB Program didn't exit properly, or you printed something to stdout.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 3088 KB Program didn't exit properly, or you printed something to stdout.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 3084 KB Program didn't exit properly, or you printed something to stdout.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 3084 KB Program didn't exit properly, or you printed something to stdout.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1032 KB Output is correct
2 Correct 0 ms 792 KB Output is correct
3 Correct 2 ms 1044 KB Output is correct
4 Correct 2 ms 1352 KB Output is correct
5 Correct 2 ms 1052 KB Output is correct
6 Correct 1 ms 1052 KB Output is correct
7 Incorrect 2 ms 1036 KB Wrong Answer [5]
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 22 ms 11180 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 24 ms 11304 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -