POJ 2139

简单枚举+FLOYD

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <climits>
#include <string.h>
#include <queue>
#include <cmath>
#include <vector>
using namespace std;
const int N=310;
const int inf=(1<<30)-1;

int dist[N][N];
int cow[N];
int n,m;

int main(){
	int c;
	while(scanf("%d%d",&n,&m)!=EOF){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(i==j) dist[i][j]=0;
				else dist[i][j]=inf;
			}
		}
		for(int i=1;i<=m;i++){
			scanf("%d",&c);
			for(int k=1;k<=c;k++)
			scanf("%d",&cow[k]);
			for(int p=1;p<=c;p++){
				for(int q=p+1;q<=c;q++){
					dist[cow[p]][cow[q]]=dist[cow[q]][cow[p]]=1;
				}
			}
		}
		for(int k=1;k<=n;k++){
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++)
				if(dist[i][j]>dist[i][k]+dist[k][j])
				dist[i][j]=dist[i][k]+dist[k][j];
			}
		}
		int ans=inf;
		for(int i=1;i<=n;i++){
			int tmp=0;
			for(int j=1;j<=n;j++)
			tmp+=dist[i][j];
			if(ans>tmp) ans=tmp;
		}
		printf("%d\n",int(ans*100.0/(n-1)));
	}
	return 0;
}

  

时间: 2025-01-05 00:00:23

POJ 2139的相关文章

POJ 2139 Six Degrees of Cowvin Bacon

Six Degrees of Cowvin Bacon Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2986   Accepted: 1390 Description The cows have been making movies lately, so they are ready to play a variant of the famous game "Six Degrees of Kevin Bacon&quo

poj 2139 Six Degrees of Cowvin Bacon , floyd

点击打开链接 题意:给定牛的关系图,求其中一头牛与其他牛关系路程之和sum最小,然后输出 sum*100/(n-1) floyd求任意两点间的最短路程 注意: inf不能太大,因为 f[i][k] + f[k][j]  做加法时可能会溢出! #include <cstdio> #include <cstring> const int maxn = 300 + 5; const int inf = 1<<29; int n, m; int f[maxn][maxn]; i

任意两点间最短距离floyd-warshall ---- POJ 2139 Six Degrees of Cowvin Bacon

floyd-warshall算法 通过dp思想 求任意两点之间最短距离 重复利用数组实现方式dist[i][j] i - j的最短距离 for(int k = 1; k <= N; k++) for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j++) dist[i][j] = min(dist[i][j], dist[i][k]+dist[k][j]); 非常好实现 O(V^3) 这里贴一道刚好用到的题 http://poj.org

Six Degrees of Cowvin Bacon (poj 2139 最短路Floyd)

Language: Default Six Degrees of Cowvin Bacon Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3288   Accepted: 1529 Description The cows have been making movies lately, so they are ready to play a variant of the famous game "Six Degrees

最短路(构图) 之 poj 2139 Six Degrees of Cowvin Bacon

/* 解决此题,关键在于构图. 目标: The N (2 <= N <= 300) cows are interested in figuring out which cow has the smallest average  degree of separation from all the other cows. excluding herself of course. 即:求解过任意两点间的最短路后,sumMin = min{ sum{dp[1][1->n]}, sum{dp[2]

POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題

Six Degrees of Cowvin Bacon Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3602   Accepted: 1675 Description The cows have been making movies lately, so they are ready to play a variant of the famous game "Six Degrees of Kevin Bacon&quo

poj 2139 Floyd-Warshall算法求最短路

题意:不想说,这个题意思了,含糊不清=-= Dijkstra算法,无法计算有负边的图,原因是有负边的图存在是会打乱Dijkstra算法的前提,当前优先队列取出点的距离为起点到该点的最小距离,因为如果后面有负边这个距离会更小.除此之外Bellman-Ford算法和Floyd-warshall算法都可以计算有负边的图,且判断是否有负圈. Floyd-Warshall算法:该算法用到了动态规划归约的思想来求任意两点间的最短距离.令:d[k][i][j]为最短路可以包括0到k的所有顶点时i到j的最短距离

挑战程序设计竞赛 2.5 它们其实都是“图”

[Summarize] 1.注意对图是否连通的判定 2.灵活运用边权取负的技巧 AOJ 0189:Convenient Location /* 给出一张无向图,现在求一个点,使得这个点到所有点的距离和最小 输出这个点的编号和距离和 */ #include <cstdio> #include <algorithm> #include <cstring> using namespace std; const int N=10,INF=0x3f3f3f3f; int n,d[

十三 十四周总结

1 //十三周总结 2 //在看挑战程序设计的第二章和第三章的第一节 3 //二分 4 //1.从一个 有序的数组里面查找某一个值 5 int pos=lower_bound(a,a+n,key)-a;//返回的pos是大于等于键值的第一个位置 6 int pos=upper_bound(a,a+n,key)-a;//返回的pos是严格大于键值的第一 个位置 7 //2.判断一个解是否可行 8 //1)一般应该是先确定上界,下界,一个判断解是否可行的ok函数来找 9 //2) 看书上写的,输出小