답안 #579373

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
579373 2022-06-19T03:34:40 Z amunduzbaev Magic Tree (CEOI19_magictree) C++17
0 / 100
1725 ms 1872 KB
#include "bits/stdc++.h"
using namespace std;
 
#define ar array
typedef int64_t ll;
//~ #define int ll

const int N = 20;
const int P = 167;
const int mod = 119 << 23 | 1;
vector<int> edges[N], qwe[N];
int used[N], is[N][N];

signed main(){
	ios::sync_with_stdio(0); cin.tie(0);
	
	int n, m; cin>>n>>m;
	vector<ar<int, 2>> e(m);
	for(int i=0;i<m;i++){
		cin>>e[i][0]>>e[i][1];
		edges[e[i][0]].push_back(e[i][1]);
		edges[e[i][1]].push_back(e[i][0]);
		is[e[i][0]][e[i][1]] = 1;
	}
	
	for(int i=1;i<=n;i++) sort(edges[i].begin(), edges[i].end());
	
	vector<int> p(n);
	iota(p.begin(), p.end(), 1);
	set<vector<int>> ss;
	int res = 0;
	do{
		memset(used, 0, sizeof used);
		int cnt = 0;
		for(auto u : p){
			qwe[u].clear();
			for(auto x : edges[u]){
				if(used[x]) continue;
				qwe[u].push_back(x);
				if(!is[u][x]) cnt++;
			}
			
			used[u] = 1;
		}
		
		memset(used, 0, sizeof used);
		vector<int> t;
		function<void(int)> dfs = [&](int u){
			used[u] = 1;
			for(auto x : qwe[u]){
				if(used[x]) continue;
				dfs(x);
			}
			
			t.push_back(u);
		};
		
		for(int i=1;i<=n;i++){
			if(!used[i]) dfs(i);
		}
		
		reverse(t.begin(), t.end());
		//~ int hh = 0;
		//~ for(auto x : t){
			//~ hh = (hh * 1ll * P + x) % mod;
		//~ }
		
		if(!ss.count(t)){
			ss.insert(t);
			res = (res + cnt) % mod;
		}
	}while(next_permutation(p.begin(), p.end()));
	
	cout<<res<<"\n";
}
 

# 결과 실행 시간 메모리 Grader output
1 Incorrect 1725 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 852 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 468 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 2 ms 1872 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1725 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 468 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1725 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1725 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -