比赛 Asm_Def战记之透明计算网络 评测结果 TTTWWWWWWA
题目名称 Asm_Def三角形 最终得分 10
用户昵称 TZJerry 运行时间 3.002 s
代码语言 C++ 内存使用 0.36 MiB
提交时间 2015-11-01 10:53:16
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const mod=1LL*998244353;
int a[100][100];
int b[10][10][10];
int c[10][10][10];
int n,m,ans;
int flag;
bool check()
{
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			for(int k=j+1;k<=n;k++)
			{
				c[i][j][k]=b[i][j][k];
			}
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			for(int k=j+1;k<=n;k++)
			{
				int sum=0;
				if(a[j][k]==0) sum++; 
				if(a[i][j]==0) sum++;
				if(a[i][k]==0) sum++;
				if(sum==3) b[i][j][k]++;
				if((sum==2)||(sum==0)) 
				{
					for(int i=1;i<=n;i++)
						for(int j=i+1;j<=n;j++)
							for(int k=j+1;k<=n;k++)
							{
								b[i][j][k]=c[i][j][k];
							}
					return false;
				}
			}
		}
	}
	return true;
}
void doit()
{
	bool c=check();
	if(c==true) ans++;
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			if(a[i][j]==1)
			{
				a[i][j]=0;
				a[j][i]=0;
				doit();
				a[i][j]=1;
				a[j][i]=1;
			}
		}
	}
}
void work1()
{
	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=1;
	for(int i=1;i<=m;i++) 
	{
		int op,u,v;
		cin>>op>>u>>v;
		if(op==1)
		{
			a[u][v]=2;
			a[v][u]=2;
		}
		else
		{
			a[u][v]=0;
			a[v][u]=0;
		}
	}
	doit();
	for(int i=1;i<=n;i++)
	{
		for(int j=i+1;j<=n;j++)
		{
			for(int k=j+1;k<=n;k++)
			{
				if(b[i][j][k]>=1)
				{
					//cout<<b[i][j][k]<<endl;
					ans=ans-b[i][j][k]+1;
				}
			}
		}
	}
}
int main()
{
	freopen("tria.in","r",stdin);
	freopen("tria.out","w",stdout);
	cin>>n>>m;
	if(m==0)
	{
		ans=1;
		for(int i=1;i<=n-1;i++)
		{
			ans=ans*2;
		}
	}
	if((n<=7)&&(m!=0)) work1();
	cout<<ans<<endl;
	return 0;
}