1054: 擼貓狂魔

1054: 擼貓狂魔

時間限制: 1 Sec  內存限制: 128 MB
提交: 26  解決: 7
[提交][狀態][討論版]

題目描述

zyyyyy是一個二刺猿。雖然他沒有九十八億,但是他堅信可愛即正義,所以他特別喜歡擼貓。
今天他爲了讓貓乖乖的被擼帶了很多很多貓糧,貓糧被擺成網格圖,於是一大羣白貓爲了喫貓糧也成了網格圖。
等它們喫的開心了zyyyyy就開始擼她們。當他擼某隻貓的時候,這隻貓所在的行和列的貓雖然在喫東西但還是會被嚇得變色(白貓變黑貓,黑貓變白貓),而這隻貓因爲驚嚇過度就變了兩次色(相當於不變色)。
擼了k次以後zyyyyy心滿意足,不過現在他想知道自己闖了多大的禍。。。因爲原來這些貓都是白的,現在有很多變成黑的了。定義整個網格圖的黑色值等於所有行的黑色值相乘,一行的黑色值是這行黑貓的個數。不過黑色值可能太大了,爲了避免他倍受打擊我們還是告訴他黑色值模1000000007的值吧。。。

輸入

第一行三個整數,n,m,k。表示行數,列數,擼貓次數。
接着k行每行兩個整數,x,y。表示這次擼的是x行y列的貓 (可以重複擼)
n,m <= 1000
k <= 500000
1<=x<=n
1<=y<=m

輸出

一個整數,表示黑色值模1000000007的值。

樣例輸入

5 4 2
3 3
3 2

樣例輸出

32

#include<iostream>
#include<cstdio>
using namespace std;
int row[1010],col[1010];
int n,m;
long k;
long long ans=1;
int main()
{
	scanf("%d%d%ld",&n,&m,&k);
	while(k--)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		row[x-1]++;
		col[y-1]++;
	}
	for(int i=0;i<n;i++)
	{
		int temp=0;
		for(int j=0;j<m;j++)
		{
			temp+=(row[i]+col[j])%2;
		}
		ans=ans*temp%1000000007;
	}
	cout<<ans<<endl;
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章