Submission #222398

#TimeUsernameProblemLanguageResultExecution timeMemory
222398dantoh000Checker (COCI19_checker)C++14
29 / 110
256 ms22520 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
int col[200005];
int adjmat[2005][2005];
int used[2005][2005];
vector<ii> adjlist[200005];
int st, n;
vector<ii> edg;
int f1, f2;
void addedge(int a, int b, int c){
    if (st <= 2){
        adjmat[a][b] = adjmat[b][a] = c;
    }
    adjlist[a].push_back({b,c});
    adjlist[b].push_back({a,c});
    if (a > b) swap(a,b);
    edg.push_back({a,b});
}
int main(){
    scanf("%d",&st);
    scanf("%d",&n);
    f1 = f2 = 1;
    for (int i = 1; i <= n; i++){
        char x;
        scanf(" %c",&x);
        addedge(i,i%n+1,x-'0');
        col[i] = x-'0';
    }
    for (int i = 0; i < n-3; i++){
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        addedge(a,b,c);
    }
    if (st <= 2){
        for (auto x : edg){
            for (auto y : edg){
                if (x == y) continue;
                int x1 = x.first, x2 = x.second, y1 = y.first, y2 = y.second;
                int c1 = adjmat[x1][x2], c2 = adjmat[y1][y2];
                int z1,z2;
                if (x1 == y1){
                    z1 = x2, z2 = y2;
                }
                else if (x2 == y2){
                    z1 = x1, z2 = y1;
                }
                else continue;
                int c3 = adjmat[z1][z2];
                //printf("<%d %d>:%d, <%d %d>:%d, %d\n",x1,x2,c1,y1,y2,c2,c3);
                if (c3 == 0) continue;
                used[x1][x2] = used[x2][x1] = 1;
                used[y1][y2] = used[y2][y1] = 1;
                used[z1][z2] = used[z2][z1] = 1;
                if (c1 == c2 || c3 != 6-c1-c2){
                    f2 = 0;
                }
            }
        }
        for (int i = 1; i <= n; i++){
            for (int j = 1; j <= n; j++){
                if (adjmat[i][j] != 0 && used[i][j] == 0) f1 = 0;
            }
        }
    }
    if (f1 == 0) printf("neispravna triangulacija");
    else if (f2 == 0) printf("neispravno bojenje");
    else printf("tocno");


}

Compilation message (stderr)

checker.cpp: In function 'int main()':
checker.cpp:21:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&st);
     ~~~~~^~~~~~~~~~
checker.cpp:22:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
     ~~~~~^~~~~~~~~
checker.cpp:26:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf(" %c",&x);
         ~~~~~^~~~~~~~~~
checker.cpp:32:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d",&a,&b,&c);
         ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...