| ||||||||||
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