| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 28374 | 뚜룹뚜룹뚜룹뚜스~>< (#68) | Play Onwards (FXCUP2_onward) | C++11 | 19 ms | 2048 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <cstdio>
#include <cstring>
#include <vector>
#define MAX_V 1000
using namespace std;
int n, m, res = 1;
char arr[MAX_V][30];
int carr[MAX_V];
bool visit[MAX_V];
vector <int> vs, G[MAX_V], rG[MAX_V];
bool iscan(int a, int s){
	int i, j, k, na, ns, cnt;
	na = strlen(arr[a]);
	ns = strlen(arr[s]);
	for(i = 0; i <= na - m; i++){
		for(j = 0; j <= ns - m; j++){
			cnt = 0;
			for(k = 0; k < m; k++){ if(arr[a][i + k] == arr[s][j + k]) cnt++; }
			if(cnt == m) return 1;
		}
	}
	return 0;
}
int V_Trans(int a){
	if(a < 0) return -a + n;
	return a;
}
void add_edge(int from, int to){
	from = V_Trans(from);
	to = V_Trans(to);
	G[from].push_back(to);
	rG[to].push_back(from);
}
void DFS(int a){
	visit[a] = 1;
	for(int i = 0; i < G[a].size(); i++){
		if(!visit[G[a][i]]) DFS(G[a][i]);
	}
	vs.push_back(a);
}
void rDFS(int a, int s){
	visit[a] = 1;
	carr[a] = s;
	for(int i = 0; i < rG[a].size(); i++){
		if(!visit[rG[a][i]]) rDFS(rG[a][i], s);
	}
}
void SCC(){
	int s = 1;
	for(int i = 1; i <= 2 * n; i++) if(!visit[i]) DFS(i);
	memset(visit, 0, sizeof(visit));
	for(int i = vs.size() - 1; i >= 0; i--) if(!visit[vs[i]]) rDFS(vs[i], s++);
}
int main(){
	int i, j, a, s;
	scanf("%d %d", &n, &m);
	for(i = 1; i <= n; i++) scanf("%s", arr[i]);
	for(i = 1; i <= n; i++){
		for(j = i + 1; j <= n; j++){
			if(iscan(i, j)) add_edge(-i, j), add_edge(-j, i), add_edge(i, -j), add_edge(j, -i);
		}
	}
	SCC();
	for(i = 1; i <= n; i++){
		if(carr[i] == carr[n + i]) res = 0;
	}
	if(!res){ printf("No"); return 0; }
	printf("Yes\n");
	if(res){
		for(i = 1; i <= n; i++){
			if(carr[i] > carr[n + i]) printf("1\n");
			else printf("2\n");
		}
	}
	return 0;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
