Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:果然是弱数据……水水的写了个AC了,但是discussion里的一组数据过不了……

Posted by 13678238733 at 2016-08-25 19:44:28 on Problem 1129
In Reply To:果然是弱数据……水水的写了个AC了,但是discussion里的一组数据过不了…… Posted by:caiminf at 2015-10-30 16:26:39
表示我的爆搜可以过
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#define MAXN 36
using namespace std;
int map[MAXN][MAXN];
int color[MAXN];
int used[MAXN];
int n,m;
int aa=10,ans,solved;
void dfs(int pos)
{
//	printf("%d\n",pos);
	if(pos==n+1)
	{
		solved=1;
//		if (ans>4) ans=4;
		aa=min(aa,ans);
		return;
	}
	if (!used[pos])
	{
		ans=max(ans,1);
		dfs(pos+1);
		return;
	}
	if (ans>aa) return;
//	if (solved) return;
	for (int i=1;i<=n+1;i++)
	{
		int flag=0;
		for (int j=1;j<=n;j++)
		{
			if (color[j]==i&&map[pos][j]) 
			{
				flag=1;break;
			}
		}
		if (!flag)
		{
			int t=0;
			if (i>ans) t=ans;
			ans=max(ans,i);
			color[pos]=i;
			dfs(pos+1);
			if (t) ans=t;
//			if (solved) return;
			color[pos]=0;
		}
	}
}
int main()
{
	freopen("c.in","r",stdin);
	while (1)
	{
		scanf("%d\n",&n);
		memset(color,0,sizeof(color));
		memset(map,0,sizeof(map));
		memset(used,0,sizeof(used));
		aa=10;ans=0;
		if (!n) break;
		for (int i=1;i<=n;i++)
		{
			char c[50];
			scanf("%s\n",c);
			for (int j=2;j<=strlen(c+1);j++)
			{
				used[i]++;
				used[c[j]-'A'+1]++;
				map[i][c[j]-'A'+1]=1;
			}
		}
		dfs(1);
		if (aa==1) printf("%d channel needed.\n",aa);
		else printf("%d channels needed.\n",aa);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator