제출 #28264

#제출 시각아이디문제언어결과실행 시간메모리
28264점수판에 아이디와 팀명이 같이 표기되니, 신중하게 적어주세요. (#68)Play Onwards (FXCUP2_onward)C++14
1 / 1
9 ms2300 KiB
#include <stdio.h> #include <bits/stdc++.h> using namespace std; #define SZ(v) ((int)(v).size()) #define ALL(v) (v).begin(),(v).end() #define one first #define two second typedef long long ll; typedef pair<int, int> pi; typedef pair<ll, int> pli; typedef pair<ll, pi> plp; typedef tuple<int, int, int> ti; typedef tuple<ll, int, int> tli; const int INF = 0x3f2f1f0f; const ll LINF = 1ll * INF * INF; const int MAX_N = 2e2 + 10; int N, K; char S[MAX_N][50]; int sN[MAX_N], C[MAX_N]; vector<int> Ed[MAX_N]; bool vis[MAX_N]; bool isCon(int i, int j) { for(int a=0; a+K-1<sN[i]; a++) for(int b=0; b+K-1<sN[j]; b++) { bool isCan = true; for(int k=0; k<K; k++) if(S[i][a+k] != S[j][b+k]) {isCan = false; break;} if(isCan) return true; } return false; } bool impos = false; void dfs(int v, int c) { vis[v] = true; C[v] = c; for(int w : Ed[v]) { if(vis[w] == true) { if(C[w] + C[v] != 1) {impos = true;} }else dfs(w, 1-C[v]); } } int main() { cin >> N >> K; for(int i=0; i<N; i++) scanf("%s", S[i]), sN[i] = strlen(S[i]); for(int i=0; i<N; i++) for(int j=i+1; j<N; j++) { if(isCon(i, j)) { // printf("%d %d\n", i, j); Ed[i].push_back(j), Ed[j].push_back(i); } } for(int i=0; i<N; i++) if(vis[i] == false) { dfs(i, 0); } if(impos) puts("No"); else { puts("Yes"); int cnt[2] ={0, 0}; for(int i=0; i<N; i++) cnt[C[i]]++; if(cnt[0] == N || cnt[1] == N) { for(int i=0; i<N-1; i++) printf("%d\n", 1); for(int i=N-1; i<N; i++) printf("%d\n", 2); }else for(int i=0; i<N; i++) printf("%d\n", C[i] + 1); } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

onward.cpp: In function 'int main()':
onward.cpp:41:64: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  for(int i=0; i<N; i++) scanf("%s", S[i]), sN[i] = strlen(S[i]);
                                                                ^
#Verdict Execution timeMemoryGrader output
Fetching results...