Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

不知道哪里错了,真的纠结了好久,希望好心人帮下忙.

Posted by zhangshuheng at 2013-04-03 14:45:04 on Problem 1135
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
int arr[505][505];
int brr[505];
int vist[505];
int INF=100000000;
int n,geshu;
int x,y,z;
int main()
{
    int k=1;
    while(scanf("%d %d",&n,&geshu)!=EOF&&n+geshu)
    {
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
            arr[i][j]=arr[j][i]=INF;
        for(int i=0;i<geshu;i++)
        {
            scanf("%d %d %d",&x,&y,&z);
            x--;
            y--;
            if(arr[x][y]>z)
            arr[x][y]=arr[y][x]=z;
        }
        printf("System #%d\n",k++);
        for(int i=0;i<n;i++)
        brr[i]=arr[i][0];
        vist[0]=1;
        int hold;
        for(int i=0;i<n;i++)
        {
            int mx=INF;
            for(int j=0;j<n;j++)
            {
                if(!vist[j]&&brr[j]<mx);
                {
                    mx=brr[j];
                    hold=j;
                }
            }
            vist[hold]=1;
            for(int j=0;j<n;j++)
            {
                if(!vist[j]&&brr[j]>arr[hold][j]+brr[hold])
                brr[j]=arr[hold][j]+brr[hold];
            }
        }
        int mx1=0;
        for(int i=0;i<n;i++)
        {
            if(brr[i]!=INF)
            {
                if(brr[i]>mx1)
                {
                    mx1=brr[i];
                    hold=i;
                }
            }
        }
        int flag=1;
        int ex,ey;
        double ff=0.0;
        for(int i=0;i<n;i++)
            for(int j=0;j<n;j++)
            {
                if(ff<(double)max(brr[i],brr[j])+((double)arr[i][j]-(double)abs(brr[i]-brr[j]))/2&&arr[i][j]!=INF&&abs(brr[i]-brr[j])<arr[i][j])
                {
                    flag=0;
                    printf("%lf\n",ff);
                    ff=(double)max(brr[i],brr[j])+((double)arr[i][j]-(double)abs(brr[i]-brr[j]))/2;
                    printf("%lf\n",ff);
                    ex=i;
                    ey=j;
                }
            }
        if(flag)
        {
            printf("The last domino falls after %d.0 seconds, at key domino %d.\n",mx1,hold+1);
        }
        else
        {
            printf("The last domino falls after %.1lf seconds, between key dominoes %d and %d.\n",ff,min(ex,ey)+1,max(ex,ey)+1);
        }
        printf("\n");
    }
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator