Total Submit:31 Accepted:10
当然,我们会给出这m个省得相邻情况。
第二行有一个整数k表示有k个相邻关系。(k< m*n)
后面k行每行有两个数字x y表示第x省与第y省相邻。
4 4
4
1 2
1 4
2 3
3 4
84
#include<iostream>
using namespace std;
int n,m;
long total=0;
int data[401][401];
int color[21];
bool colorsame(int pt)
{
int i;
for(i=1;i<=pt-1;i++)
{
if(data[i][pt]==1)
{
if(color[i]==color[pt]) return true;
}
}
return false;
}
void trycolor(int pt)
{
int i;
if(pt>m)
{
//for(i=1;i<=m;i++)
//cout<<color[i]<<" ";
//cout<<endl;
total++;
}
else
{
for(i=1;i<=n;i++)
{
color[pt]=i;
if(colorsame(pt)==false)
trycolor(pt+1);
}
}
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int k;
int x,y;
int i,j;
cin>>n>>m;
cin>>k;
for(i=0;i<401;i++)
for(j=0;j<401;j++)
data[i][j]=0;
for(i=0;i<=m;i++)
color[i]=0;
for(i=0;i<k;i++)
{
cin>>x>>y;
data[x][y]=1;
}
trycolor(1);
cout<<total<<endl;
//system("pause");
return 0;
}