博文

Zju 1203 Swordfish(2006-08-01 23:01:00)

摘要: 1991483 2006-08-01 22:46:34 Accepted 1203 C++ 00:00.01 480K St.Crux O(n^3)。用邻接矩阵做的。什么?prim是什么......求最小生成树。不过我总觉得这个算法有待提高...... 另:double必须要用%lf来读入 #include <cstdio>
#include <string>
#include <cmath> double a[100][100], sum, p[100][2];
int b[100], n; void prim()
{
 int i, k, j, sp, ep;
 sum = 0;
 for(i = 1; i < n; i ++)
 {
  double min = 30000;
  for(k = 0; k < n; k ++) // 起点边
  {
   if(!b[k]) continue;
   for(j = 0; j < n; j ++) // 终点边
   {
    if(b[j]) continue;
    if(a[k][j] < min)
    {
     min = a[k][j];
     sp = k, ep = j;
    }
   }
  }
  sum += min;
  b[ep] = 1;
 }
} voi......

阅读全文(4103) | 评论:3

ZOJ 1221 Risk(2006-07-27 00:10:00)

摘要:/* source:  zju 1221 */
/* algo:  floyd  */
/* author:  St.Crux  */
#include <cstdio> int m[20][20]; int main()
{
 //freopen("in.txt", "r", stdin);
 int i, k, j, n, a, t = 0;
 while(scanf("%d", &a) != EOF)
 {  
  for(i = 0; i < 20; i ++)
  {
   for(k = 0; k < 20; k ++)
   {
    m[i][k] = ((i == k) ? 0 : 100);
   }
  }
  for(k = 0; k < a; k ++)
  {
   scanf("%d", &j);
   m[0][j - 1] = 1;
   m[j - 1][0] = 1;
  }
  for(i = 1; i < 19; i ++)
  {
   scanf("%d", &a);
   for(k = 0; k < a; k ++)
   {
    scanf("%d", &j);
&n......

阅读全文(4118) | 评论:0