| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
慢死了还比我快In Reply To:我的搜索慢死了< =_= >请大牛指教............. Posted by:dwq at 2010-03-16 21:26:23 > 我是一个个的搜的//////
>
> #include<iostream>
> #include<stdio.h>
> #include<string.h>
> using namespace std;
>
> int bug[2010], mark[2010][2010], ii[2010], use[2010]; // bug[i]记录虫i的性别(0为没记录),mark[i]记录与虫i有关系的虫一个个放入
> // ii[k] 记录与k虫有关系的虫个数,use记录该虫是否搜过
>
> bool find(int k)
> {
> int i,s = 1;
> if(bug[k] == 1) // 要与K不同的性别
> s = 2;
> for(i=0; i<ii[k]; i++)
> {
> if(bug[ mark[k][i] ] == bug[k])
> return true;
> else if(use[ mark[k][i] ]==0)
> {
> bug[ mark[k][i] ] = s;
> use[ mark[k][i] ] = 1;
> if(find(mark[k][i]))
> return true;
> }
> }
> return false;
> }
>
>
>
> int main()
> {
> int i,t,n,m,a,b,sig,k=1;
> scanf("%d", &t);
> while(t--)
> {
> memset(bug, 0, sizeof(bug));
> memset(mark, 0, sizeof(mark));
> memset(ii, 0, sizeof(ii));
> memset(use, 0, sizeof(use));
> scanf("%d%d", &n, &m);
> for(i=0; i<m; i++)
> {
> cin>>a>>b;
> mark[a][ii[a]++] = b;
> mark[b][ii[b]++] = a;
> }
> sig = 0;
> for(i=1; i<=n; i++)
> {
> if(!use[i] && ii[i] != 0)
> {
> bug[i] = 1;
> use[i] = 1;
> if(find(i))
> {
> sig = 1;
> break;
> }
> }
> }
> printf("Scenario #%d:\n", k);
> k += 1;
> if(sig)
> printf("Suspicious bugs found!\n\n");
> else
> printf("No suspicious bugs found!\n\n");
> }
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator