国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

51Nod - 1655 找規(guī)律 + 構(gòu)造

2019-11-09 19:13:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

題意:

一個(gè)n(3<=n<=100)個(gè)點(diǎn)的完全圖,現(xiàn)在給出n,要求將每條邊都染上一種顏色k(1<=k<=n),最終使得所有三個(gè)點(diǎn)構(gòu)成的環(huán)(C(n,3)個(gè)不同的換)上三條邊的顏色和在所有顏色中任選三種顏色的組合(C(n,3)種方案)一一對(duì)應(yīng),由你來(lái)給出染色方案。本題有多組數(shù)據(jù)Input
第一行一個(gè)整數(shù)T,表示數(shù)據(jù)組數(shù)接下來(lái)T行每行一個(gè)整數(shù)n,表示完全圖的點(diǎn)數(shù)Output
輸出由T個(gè)部分組成每個(gè)部分的第一行一個(gè)整數(shù)n,表示完全圖的點(diǎn)數(shù)第二行表示構(gòu)造結(jié)果如果無(wú)解輸出No solution否則輸出n*(n-1)/2條邊的起點(diǎn)、終點(diǎn)和顏色I(xiàn)nput示例
243Output示例
4No solution31 2 3 2 3 1 3 1 2

思路:

一開(kāi)始沒(méi)什么思路,找找規(guī)律,花了幾個(gè)發(fā)現(xiàn),先把正n邊形外圍順時(shí)針從1到n標(biāo)記一圈,然后所有外圍的邊所正對(duì)的平行邊都標(biāo)記成與其一樣的顏色,畫個(gè)圖就明白了。代碼寫得比較蠢,想到就寫了。

代碼:

#include <cstdio>#include <cstring>#include <algorithm>#include <vector>using namespace std;const int MAXN = 105;int g[MAXN][MAXN];bool vis[MAXN];struct Edge {	int u, v, col;};int main() {	int T;	scanf("%d", &T);	while (T--) {		int n;		scanf("%d", &n);		PRintf("%d/n", n);		if (n % 2 == 0) {			puts("No solution");			continue;		}		for (int i = 1; i <= n; i++) {			int x = i, y = (i == n ? 1 : i + 1);			for (int j = 1; j <= n; j++) vis[j] = false;			vis[x] = vis[y] = true; 			g[x][y] = g[y][x] = i; 			for (int j = 1; j < (n - 1) / 2; j++) {				int px = (x == n ? 1 : x + 1), qx = (x == 1 ? n : x - 1);				x = vis[px] ? qx : px;				int py = (y == n ? 1 : y + 1), qy = (y == 1 ? n : y - 1);				y = vis[py] ? qy : py;				vis[x] = vis[y] = true;				g[x][y] = g[y][x] = i;			}		}		vector <Edge> ans;		for (int i = 1; i <= n; i++) {			for (int j = i + 1; j <= n; j++) {				ans.push_back((Edge){i, j, g[i][j]});			}		}		int cnt = ans.size();		for (int i = 0; i < cnt; i++)			printf("%d %d %d%c", ans[i].u, ans[i].v, ans[i].col, i == cnt - 1 ? '/n' : ' ');	}	return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 社会| 滦南县| 云林县| 彭山县| 礼泉县| 黑龙江省| 阜康市| 康定县| 景洪市| 林芝县| 宁陕县| 凯里市| 黑山县| 高碑店市| 甘南县| 富蕴县| 乐昌市| 泰顺县| 庆城县| 扶沟县| 嘉峪关市| 广州市| 巴青县| 综艺| 江陵县| 宝鸡市| 綦江县| 资兴市| 茶陵县| 泰安市| 凤台县| 衡东县| 巴林右旗| 钟山县| 泗洪县| 乌什县| 都匀市| 清涧县| 屏东市| 张掖市| 新晃|