1013. Battle Over Cities
来源:互联网 发布:控制射精 知乎 编辑:程序博客网 时间:2024/05/18 05:57
题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1013
并查集
// 思绪太乱,没有想好就写// 另外,所用变量名字,大小写都出现,生出不少端倪// 图的并查集问题有些生疏// // 本题思路:// 1.去掉被占领城市所有的边,计算合并次数ans, // 则ans-1为结果(去掉连通占领城市的边)// 2.合并时,跳过被占领的城市#include <stdio.h>#define SIZE 1000+10#define INF -1int map[SIZE][SIZE], nmap[SIZE][SIZE];int n, m, K;int fa[SIZE];int getfa(int x){if(x == fa[x])return x;elsefa[x] = getfa(fa[x]);return fa[x];}void Init(){int i;for(i=1; i<=n; i++){for(int j=1; j<=n; j++){if(i != j){map[i][j] = INF;}else{map[i][j] = 0;}}}return ;}void Initfa(){int i, j;for(i=1; i<=n; i++){fa[i] = i;}for(j=1; j<=n; j++){int k;for(k=j; k<=n; k++){int a= getfa(j);int b= getfa(k);if(nmap[j][k] == 1){fa[b] = a;}}}// 连通的节点合并return ;}void newMap(int city){int i, j;for(i=1; i<=n; i++){for(j=1; j<=n; j++){if(i == city || j == city){nmap[i][j] = INF;}else{nmap[i][j] = map[i][j];}}}return ;}void Printmap(int map[SIZE][SIZE]){int i, j;for(i=1; i<=n; i++){for(j=1; j<=n; j++){printf("%2d ", map[i][j]);}printf("\n");}return ;}int main(){#ifdef ONLINE_JUDGE#elsefreopen("E:\\in.txt", "r", stdin);//freopen("E:\\out.txt", "w", stdout);#endifscanf("%d%d%d", &n, &m, &K);Init();int i, c1, c2;for(i=0; i<m ; i++){scanf("%d%d", &c1, &c2);map[c1][c2] = map[c2][c1] = 1;}//Printmap(map);while(K-->0){if(n <= 2){printf("0\n");continue;}int lc;//losted cityscanf("%d", &lc);newMap(lc);Initfa();//printf("\n");//Printmap(nmap);int ans=0, j;for(j=1; j<=n; j++){if(j == lc){continue;}int k;for(k=j; k<=n; k++){if(k ==lc){continue;}int a= getfa(j);int b= getfa(k);if(a != b){ans++;fa[b] = a; }}}printf("%d\n", ans);}return 0;}
0 0
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013.Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- PAT 1013. Battle Over Cities
- PAT 1013. Battle Over Cities
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- MySQL安装时出现Apply Security Settings错误的解决办法
- Oracle默认用户名与密码速查表
- select、poll、epoll的用法总结
- 优秀程序员的十个习惯
- 找逆序的对数&&和为n的两个数字&&和为n的连续正数序列
- 1013. Battle Over Cities
- 读书笔记--看见--2014年03月10日
- 九个超实用的PHP代码片段
- 读书笔记--看见--2014年03月11日
- 有关于return 语句的小知识点,求解决?
- AOJ-AHU-OJ-542 Window
- 读书笔记--看见--2014年03月15日
- centos下hadoop2.2.0源码编译
- 程序员需要具备的基本技能