codeforces 170 div2 C
2013-03-02 18:30
357 查看
#include <iostream> #include <cstdio> #include <cstring> #include <map> #include <vector> #include <cmath> #include <algorithm> using namespace std; const int maxn=100005; const int oo=0x3fffffff; int f[maxn]; int color[maxn]; int find(int x) { if(x==f[x]) return x; return f[x]=find(f[x]); } int main() { int n, m; while(cin >> n >> m) { for(int i=0; i<maxn; i++) f[i]=i, color[i]=0; int cnt=0; for(int i=1; i<=n; i++) { int k, a; cin >> k; if(k==0) {color[i]=1;cnt++;continue;} while(k--) { scanf("%d",&a); int fa=find(i); int fb=find(a+n);//间接将两个n以内的union一起 if(fa!=fb) f[fb]=fa; } } int ans=0; for(int i=1; i<=n; i++) { if(color[i]) continue; if(i==find(i)) ans++; } if(ans==0) ans=1; cout << cnt+ans-1 <<endl; } return 0;
题目也可以用prim() 通过任意点来求最短路
用dijkstra 效率太低 要指定点 还要循环n次
http://codeforces.com/contest/278/problem/C
相关文章推荐
- [Codeforces 277E][Round #170 div.1 E]Binary Tree on Plane
- [计数排序 线段树] Codeforces 558E #312 (Div. 2) E. A Simple Task
- Codeforces 272 div2
- codeforces 368(div 2)前三题
- codeforces 330A 330B 329A 分别是7月20DIV2的前三题
- [几何 模拟退火 || 随机增量法] Codeforces 442E #253 (Div. 1) E. Gena and Second Distance
- Codeforces-Round-#356-(Div.-2)-Bear-and-Five-Cards
- Codeforces Beta Round #27 (Codeforces format, Div. 2) D Ring Road 2(二分图染色版)
- Codeforces 242(DIV 2) A题
- Codeforces 484(#276 Div 1) B Maximum Value 筛法
- [Codeforces]Round246 div2 解题报告
- 付忠庆的练习小笔记-Codeforces #277.5 Div2 A&D
- codeforces 789 div2 题解(AB水题,C dp,D图论)
- Codeforces Round #170 (Div. 1) E. Binary Tree on Plane(费用流)
- 【Codeforces Round #122 (Div. 1)】Codeforces 193D Two Segments
- 【codeforces】Codeforces Round #279 (Div. 2) 题解
- [构造] Codeforces 226D #140 (Div. 1) D. The table
- Codeforces Round #425 (Div. 2) Problem D Misha, Grisha and Underground (Codeforces 832D) - 树链剖分 - 树状数组
- codeforces 257 div1
- [dfs树] Codeforces 521E #295 (Div. 1) E. Cycling City