| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
这个题目为什么FLOYD也过不了啊?快哭了,谢谢各位大牛帮忙看看!!!Source Code
Problem: 1122 User: wangfengbo
Memory: N/A Time: N/A
Language: G++ Result: Wrong Answer
Source Code
#include <iostream>
#include <sstream>
#include <cstdlib>
using namespace std;
struct tt
{
int begin,time;
}start[21];
int map[21][21];
int path[21][21]={0};
int cmp(const void *a,const void *b)
{
tt *c,*d;
c = (tt*)a;
d = (tt*)b;
return c->time - d->time;
}
void pathprint(int index,int dest)
{
int temp;
if(index == dest)
{
printf("%d",index);
return ;
}
if(dest == 0)
printf("%d\t",index);
else
{
if(index == 0)
printf("%d\t",dest);
else
{
temp = path[index][dest];
if(temp == 0)
printf("%d\t%d\t",index,dest);
else
{
pathprint(index,path[index][temp]);
printf("%d\t",temp);
pathprint(path[index][temp],dest);
}
}
}
}
int main()
{
stringstream ss;
int i,j,k,n,des,fire,temp;
char s[100],ch;
//freopen("in.txt","r",stdin);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&map[i][j]);
if(map[i][j] == -1)
map[i][j] = 1000000;
}
}
while(ch=getchar(),ch!='\n');
gets(s);
ss<<s;
ss>>des;
i=0;
while(ss>>temp)
start[i++].begin=temp;
fire = i;
//floyd
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(map[i][j] > (temp = map[i][k]+map[k][j]))
{
map[i][j] = temp;
path[i][j]=k;
}
}
}
}
for(i=0;i<fire;i++)
start[i].time = map[start[i].begin][des];
qsort(start,fire,sizeof(start[0]),cmp);
printf("Org\tDest\tTime\tPath\n");
for(i=0;i<fire;i++)
{
printf("%d\t%d\t%d\t",start[i].begin,des,start[i].time);
pathprint(start[i].begin,des);
printf("\n");
}
printf("\n");
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator