FOJ Problem 2210 攻佔計劃

一,問題描述

二,問題分析

       分析題目n表示城市數量,m表示城市之間道路的數量,而道路不會形成環路,且輸入的a,b表示表示城市a有一條連向城市b的道路,說明是有向圖,要破壞一座城市,使得斷糧最多,即就是選擇一個城市,而這個城市就是 道路中起點次數最多的城市,採用一個數組記錄城市作爲起點的次數,注意城市的下標是從1開始的,所以數組要多開闢一個空間。

三,問題解答

#include<iostream>
#include<vector>
using namespace std;

int main() {
	int n, m;			//n 城市數,m道路數
	cin >> n >> m;
	vector<int> start(n + 1);			//數組多開闢一個空間
	for (int i = 0; i < m; i++) {
		int a, b;
		cin >> a >> b;
		start[a]++;
	}
	int max = 0;
	int maxid = 0;
	for (int i = 0; i < start.size(); i++) {		//選出起點數最多的城市,並記錄下標
		if (start[i] > max) {
			max = start[i];
			maxid = i;
		}
	}
	cout << maxid << endl;					//輸出城市編號


	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章