1013. Battle Over Cities (25)
来源:互联网 发布:红蜘蛛破解软件 编辑:程序博客网 时间:2024/06/07 09:17
题目大意
有N个城市,如果其中一个被敌军占领,连接到这个城市的所有高速公路就会关闭。但有可能造成其他的城市不联通了,找出需要修复几条路可以把整个图连通
思路
除去被占领的城市,计算有几个连通分支。
用visit[ ]保存所有城市是否别访问,然后对每个没有被访问的城市DFS,然后分支数++
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>int graph[1000][1000];//先建立一个图 void DFS(int N,int deletecity,int start,int visit[]){ visit[start] = 1;//访问过这个结点了 for (int i = 0; i < N; i++) { if (visit[i] == 0 && i != deletecity && graph[start][i] == 1) DFS(N, deletecity, i, visit); }}int main(){ int N, M, K; scanf("%d%d%d", &N, &M, &K); for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) graph[i][j] = 0; int x, y; for (int i = 0; i < M; i++) { scanf("%d%d", &x,&y); graph[x - 1][y - 1] = 1; graph[y - 1][x - 1] = 1; } int deletecity, visit[1000], cnt; for (int i = 0; i < K; i++) { scanf("%d", &deletecity); deletecity -= 1; cnt = -1; for (int j = 0; j < N; j++) visit[j] = 0; for (int j = 0; j < N; j++) { if (visit[j] == 0 && j != deletecity) {//搜索 DFS(N, deletecity, j, visit); cnt++; } } printf("%d\n", cnt); } system("pause"); return 0;}
0 0
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 1013. Battle Over Cities (25)
- 设备树
- IOS/Android开发用递归法获取指定开始字符串到结尾字符串中间内容
- pyc7
- 一些常见的RGB颜色值
- 浅析条码、RFID及EPC之间的联系与区别
- 1013. Battle Over Cities (25)
- 有状态和无状态的session bean
- 设计模式之单件模式
- PIC精英年会资料下载
- <ol>标签,添加有序列表
- SPOJ FACVSPOW 数论+二分
- .NET中常用的知识点--数组、ArrayList和List的区别
- Java的ClassLoader分析与Jettty的WebAppClassLoader
- ContentResolver 内容访问者访问手机联系人