lightoj1034 Hit the Light Switches
2015-11-16 19:53
120 查看
思路:开始想的就是普通的dfs就好了,但是样例再次神奇的过了,然后wa成傻逼了。
里面主要是有个贪心的思想,从最高的topo序开始dfs,,,,涨知识了。
里面主要是有个贪心的思想,从最高的topo序开始dfs,,,,涨知识了。
// #pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostream> #include <algorithm> #include <iomanip> #include <sstream> #include <string> #include <stack> #include <queue> #include <deque> #include <vector> #include <map> #include <set> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <limits.h> // #define DEBUG #ifdef DEBUG #define debug(...) printf( __VA_ARGS__ ) #else #define debug(...) #endif #define MEM(x,y) memset(x, y,sizeof x) using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> ii; const int inf = 1 << 30; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; const int maxn = 10010; int head[maxn], nxt[maxn << 4], to[maxn << 4]; int n, m; bool vis[maxn]; vector<int> topo; void dfs(int u){ vis[u] = true; for (int i = head[u]; i != -1;i = nxt[i]){ if (vis[to[i]]) continue; dfs(to[i]); } topo.push_back(u); } int tol; void add(int u,int v){ to[tol] = v; nxt[tol] = head[u]; head[u] = tol++; } int main() { // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); int t, icase = 0; cin >> t; while(t--){ scanf("%d%d",&n,&m); MEM(vis, false); MEM(head, -1); tol = 0; int a,b; for (int i = 0;i < m;++i){ scanf("%d%d",&a,&b); add(a,b); } topo.clear(); for (int i = 1;i <= n;++i) if (!vis[i]) dfs(i); // for (int i = 0;i < n;++i){ // printf("%d\t", topo[i]); // } // printf("\n\n"); int cnt = 0; MEM(vis, false); for (int i = n - 1;i >= 0;--i){ int u = topo[i]; if (vis[u]) continue; dfs(u); cnt++; } printf("Case %d: %d\n", ++icase, cnt); } return 0; }
相关文章推荐
- 硬件语言编写规范与技巧
- hibernate连接Oracle rac
- java笔记_集合
- leetcode 50:Pow(x, n)
- Thread的run()与start()的区别
- xml文件不能被正确解析/The processing instruction target matching "[xX][mM][lL]" is not al
- 图像分割
- HTML笔记(2)
- 在xml中添加array
- 第八周 数据结构实践项目——串【项目4-字符串加密】
- 笔记五(垂直运动)
- Java RMI之HelloWorld篇
- iOS开发拓展篇—CoreLocation简单介绍
- java搭建finagle(2)
- AngularJs $compile编译服务与指令
- [POJ 1625] Censored! (AC自动机+DP+大整数)
- .pch文件的创建
- Unity与Android接口互相调用
- 一些重要的标准数组
- [LeetCode]89. Partition List链表划分