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

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

bzoj 1770: [Usaco2009 Nov]lights 燈

2019-11-11 03:14:07
字體:
供稿:網(wǎng)友

1770: [Usaco2009 Nov]lights 燈

Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 820  Solved: 387[Submit][Status][Discuss]

Description

貝希和她的閨密們?cè)谒齻兊呐E镏型孢[戲。但是天不從人願(yuàn),突然,牛棚的電源跳閘了,所有的燈都被關(guān)閉了。貝希是一個(gè)很膽小的女生,在伸手不見拇指的無盡的黑暗中,她感到驚恐,痛苦與絕望。她希望您能夠幫幫她,把所有的燈都給重新開起來!她才能繼續(xù)快樂地跟她的閨密們繼續(xù)玩遊戲! 牛棚中一共有N(1 <= N <= 35)盞燈,編號(hào)為1到N。這些燈被置於一個(gè)非常複雜的網(wǎng)絡(luò)之中。有M(1 <= M <= 595)條很神奇的無向邊,每條邊連接兩盞燈。 每盞燈上面都帶有一個(gè)開關(guān)。當(dāng)按下某一盞燈的開關(guān)的時(shí)候,這盞燈本身,還有所有有邊連向這盞燈的燈的狀態(tài)都會(huì)被改變。狀態(tài)改變指的是:當(dāng)一盞燈是開著的時(shí)候,這盞燈被關(guān)掉;當(dāng)一盞燈是關(guān)著的時(shí)候,這盞燈被打開。 問最少要按下多少個(gè)開關(guān),才能把所有的燈都給重新打開。 數(shù)據(jù)保證至少有一種按開關(guān)的方案,使得所有的燈都被重新打開。

Input

*第一行:兩個(gè)空格隔開的整數(shù):N和M。

*第二到第M+1行:每一行有兩個(gè)由空格隔開的整數(shù),表示兩盞燈被一條無向邊連接在一起。 沒有一條邊會(huì)出現(xiàn)兩次。

Output

第一行:一個(gè)單獨(dú)的整數(shù),表示要把所有的燈都打開時(shí),最少需要按下的開關(guān)的數(shù)目。

Sample Input

5 61 21 34 23 42 55 3輸入細(xì)節(jié):一共有五盞燈。燈1、燈4和燈5都連接著燈2和燈3。

Sample Output

3輸出細(xì)節(jié):按下在燈1、燈4和燈5上面的開關(guān)。

HINT

Source

Gold

[Submit][Status][Discuss]
HOME Back

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define N 100using namespace std;int n,m,point[N],a[N][N],nxt[N],v[N],b[N],ans[N];int cnt,q[N],mn,bt[N],size,now;void dfs(int i){	if (!i) {		mn=min(mn,now);		return;	}	if (now>=mn) return;	if (a[i][i]) {	   for (int j=i+1;j<=n;j++)	    if (a[i][j]) b[i]^=ans[j];	   ans[i]=b[i];	   if (b[i]) now++;	   dfs(i-1);	   if (b[i]) now--;	   for (int j=i+1;j<=n;j++)	    if (a[i][j]) b[i]^=ans[j];		}	else {		ans[i]=1; now++; dfs(i-1);		ans[i]=0; now--; dfs(i-1);	}}void guass(){	for (int i=1;i<=n;i++) {		int j=i;		for (int t=i+1;t<=n;t++)		 if (a[t][i]) {		   j=t;		   break;	    }		if (a[j][i]==0) continue;		if (j!=i) {			swap(b[j],b[i]);			for (int t=1;t<=n;t++) swap(a[i][t],a[j][t]);		}		for (int t=1;t<=n;t++)		 if (a[t][i]&&t!=i) {		 	b[t]^=b[i];		 	for (int j=1;j<=n;j++) 		 	 a[t][j]^=a[i][j];		 }	}	//for (int i=1;i<=n;i++,cout<<endl)	// for (int j=1;j<=n;j++) cout<<a[i][j]<<" ";	//for (int i=1;i<=n;i++) cout<<b[i]<<" ";	//cout<<endl;	dfs(n);	//for (int i=1;i<=n;i++) cout<<ans[i]<<" ";	//cout<<endl;}int main(){	freopen("a.in","r",stdin);	freopen("my.out","w",stdout);	scanf("%d%d",&n,&m); mn=n;	for (int i=1;i<=n;i++) b[i]=1,a[i][i]=1;	for (int i=1;i<=m;i++) {	 int x,y; scanf("%d%d",&x,&y);	 a[x][y]=a[y][x]=1;	}	//for (int i=1;i<=n;i++,cout<<endl)	// for (int j=1;j<=n;j++) cout<<a[i][j]<<" ";	guass();	PRintf("%d/n",mn);}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 奉新县| 民勤县| 新疆| 宽甸| 威信县| 临澧县| 介休市| 延川县| 天台县| 增城市| 永寿县| 陕西省| 张家口市| 洪雅县| 新和县| 马关县| 井研县| 永安市| 晋宁县| 衢州市| SHOW| 乐都县| 汕头市| 日喀则市| 封丘县| 淳化县| 丰都县| 兴城市| 南丰县| 大安市| 新闻| 和静县| 衡南县| 长泰县| 天水市| 诸城市| 金堂县| 平顶山市| 巴里| 哈尔滨市| 蓬莱市|