比赛 |
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;
}