2012年8月3日
摘要: 又是套汇为题,初始化d数组为1就可以了,用bellman—ford算法。 1 #include<stdio.h> 2 #include<string.h> 3 4 int n, m, num, u[2000], v[2000]; 5 double w[2000], d[50], ra; 6 char s[50][100], s1[100], s2[100]; 7 8 void solve() 9 {10 for(int i = 0; i <= n; i ++) d[i] = 1;11 for(int k = 0; k < n-1; k ++)12 for(i 阅读全文
posted @ 2012-08-03 15:19 BFP 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 用floyd算法求出任意两点之间的距离,然后从一点出发找到其他点的最大的距离,找从所有点出发到其他点里的最大距离这一集合的最小值,就是所求.#include<stdio.h>#include<string.h>#define MAXN 110int n, m, d[MAXN][MAXN];int main(){ while(scanf("%d",&n)) { if(n == 0) break; memset(d,0x3f,sizeof(d)); for(int i = 1; i <= n; i ++) { ... 阅读全文
posted @ 2012-08-03 13:22 BFP 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 这道题我是用并查集处理的,将所有边排序,当生成树里出现第一个点,第二个点时(或第0点第1个点),结束并查集,输出已处理边里的最大值就可以了。 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 #define MAXN 210 5 int n,g,h,u[MAXN*MAXN],v[2*MAXN*MAXN],p[MAXN],r[2*MAXN*MAXN]; 6 double x[MAXN],y[MAXN],w[2*MAXN*MAXN],flag[2*MAXN*MAXN]; 7 8 int c 阅读全文
posted @ 2012-08-03 11:23 BFP 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 弄了好长时间,终于找到错误了,原来地位可以为0,另外建立的可能是非连通的图,切记。#include<stdio.h>#include<string.h>#define INF 10000000#define MAXN 110int m,n,N,mi,ans,p[MAXN],rank[MAXN],w[MAXN][MAXN], d[MAXN], vis[MAXN];void solve(int u, int v){ memset(vis, 0, sizeof(vis)); ans = INF; for(int i = 0; i <= n; i ++) d[i] = I 阅读全文
posted @ 2012-08-03 09:33 BFP 阅读(167) 评论(0) 推荐(0) 编辑