USACO 4.3 Street Race(DFS)
2013-03-27 11:18
399 查看
本来想用floyd的,利用p[i][j] < INF&&p[j][i] < INF 来判断的,提交发现在前边或者后边的跑道存在环的时候,这样做是错的。。。我改了一下,直接暴力。。。
/* ID:cuizhe LANG: C++ TASK: race3 */ #include <cstdio> #include <cmath> #include <cstring> #include <iostream> #include <map> #include <queue> #include <algorithm> using namespace std; #define INF 100000 int p[101][101]; int o[101]; int flag[101]; int n; int dfs(int x) { int i; if(x == n) return 1; for(i = 0;i <= n;i ++) { if(p[x][i] == 1&&!o[i]) { o[i] = 1; if(dfs(i)) return 1; o[i] = 0; } } return 0; } void dfs1(int x,int key) { int i; if(x == key) return; for(i = 0;i <= n;i ++) { if(p[x][i] == 1&&!o[i]) { o[i] = 1; dfs1(i,key); } } return ; } int dfs2(int x,int key) { int i; if(x == key) return 0; for(i = 0;i <= n;i ++) { if(p[x][i] == 1&&!o[i]) { o[i] = 2; if(dfs2(i,key)) return 1; } else if(p[x][i] == 1&&o[i] == 1) { return 1; } } return 0; } int main() { int i,j,num,ans = 0; freopen("race3.in","r",stdin); freopen("race3.out","w",stdout); for(i = 0;i <= 50;i ++) { for(j = 0;j <= 50;j ++) p[i][j] = INF; p[i][i] = 0; } for(i = 0;;i ++) { scanf("%d",&num); if(num == -1) break; if(num == -2) continue; p[i][num] = 1; for(;;) { scanf("%d",&num); if(num == -2) break; p[i][num] = 1; } } n = i-1; for(i = 1;i < n;i ++) { memset(o,0,sizeof(o)); o[i] = 1; if(!dfs(0)) { flag[i] = 1; ans ++; } o[i] = 0; } printf("%d",ans); for(i = 1;i < n;i ++) { if(flag[i]) printf(" %d",i); } printf("\n"); ans = 0; for(i = 1;i < n;i ++) { if(flag[i]) { memset(o,0,sizeof(o)); o[0] = 1; dfs1(0,i); o[i] = 2; if(dfs2(i,n)) continue; else { flag[i] = 2; ans ++; } } } printf("%d",ans); for(i = 1;i < n;i ++) { if(flag[i] == 2) printf(" %d",i); } printf("\n"); return 0; }
相关文章推荐
- usaco 4.3 Street Race
- USACO-Section 4.3 Street Race (枚举&&BFS)
- Street Race_usaco 4.3_spfa+暴力+dfs
- usaco 4.3 Street Race 2010.8.7
- USACO 4.3 Street Race
- USACO 4.3 Letter Game(DFS)
- usaco-4.3-race3-passed
- USACO-Section 2.1 Hamming Codes (DFS)
- Cryptcowgraphy USACO 4.1(dfs搜索+剪枝)
- USACO section 2.3 Controlling Companies(dfs)
- USACO Section 5.3 Milk Measuring (IDDFS+dp)
- 【dfs】【高斯消元】【异或方程组】bzoj1770 [Usaco2009 Nov]lights 燈 / bzoj2466 [中山市选2009]树
- USACO 2.1 健康的好斯坦奶牛 (DFS)
- USACO 4.1 Fence rails(迭代加深DFS+二分)
- BZOJ 1603 Usaco2008 Oct 打谷机 DFS
- 洛谷P2982 [USACO10FEB]慢下来Slowing down(线段树 DFS序 区间增减 单点查询)
- USACO 4.3 Buy Low, Buy Lower(dp)
- USACO 4.3 buylow
- BZOJ 3391: [Usaco2004 Dec]Tree Cutting网络破坏( dfs )
- USACO2.43Cow Tours(floyd+dfs)