Submission #300713

#TimeUsernameProblemLanguageResultExecution timeMemory
300713haojiandan슈퍼트리 잇기 (IOI20_supertrees)C++14
100 / 100
262 ms22368 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; const int maxn=1010; queue<int> q,q2; bool vis[maxn]; int fa[maxn],line[maxn]; int construct(vector<vector<int> > p) { int n = p.size(); vector<vector<int> > ans; for (int i = 0; i < n; i++) { vector<int> row; row.resize(n); ans.push_back(row); } for (int i=0;i<n;i++) for (int j=0;j<n;j++) if (p[i][j]==3) return 0; int lst; for (int i=0;i<n;i++) if (!vis[i]) { q.push(i); vector<int> circle; circle.clear(); while (!q.empty()) { int u=q.front(); q.pop(); if (vis[u]) continue; circle.push_back(u); q2.push(u); lst=-1; while (!q2.empty()) { int v=q2.front(); q2.pop(); if (vis[v]) continue; vis[v]=1; //printf("%d %d %d\n",i,u,v); fa[v]=i,line[v]=u; if (lst>-1) ans[lst][v]=ans[v][lst]=1; lst=v; for (int j=0;j<n;j++) { if (p[v][j]==2) q.push(j); else if (p[v][j]==1) q2.push(j); } } } if (circle.size()<=1) continue; if (circle.size()==2) return 0; circle.push_back(circle[0]); for (int j=0;j<circle.size()-1;j++) ans[circle[j]][circle[j+1]]=ans[circle[j+1]][circle[j]]=1; } //printf("OK\n"); for (int i=0;i<n;i++) for (int j=0;j<n;j++) { if (p[i][j]==0) { if (fa[i]==fa[j]) { //printf("??\n"); return 0; } } if (p[i][j]==1) { if (line[i]!=line[j]) { //printf("%d %d %d %d %d %d\n",i,j,fa[i],fa[j],line[i],line[j]); //printf("??\n"); return 0; } } if (p[i][j]==2) { if (fa[i]!=fa[j]||line[i]==line[j]) { //printf("??\n"); return 0; } } } build(ans); return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:43:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |   for (int j=0;j<circle.size()-1;j++) ans[circle[j]][circle[j+1]]=ans[circle[j+1]][circle[j]]=1;
      |                ~^~~~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...