| ||||||||||
| 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 | |||||||||
RP太有问题了。跟大牛的代码几乎一样了都还WA?谁帮我找找错误呀,跪谢#include <iostream>
#include <cstdio>
#include <sstream>
#include <algorithm>
#define MAX 1000000
using namespace std;
struct ANS
{
int time,path[21],org,len;
}ans[21];
bool operator < (ANS p,ANS q)
{
return p.time < q.time;
}
int main()
{
int u,min,len[21],length[21],i,j,n,k,count,start[21],dest,pth[21][21],map[21][21];
bool v[21];
stringstream ss;
freopen("in.txt","r",stdin);
//read data
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] = MAX;
}
}
scanf("%d",&dest);
count=0;
while(scanf("%d",&start[count])!=EOF)count++;
// solve
for(i=0;i<count;i++)
{
if(start[i]==dest)
{
ans[i].time = 0;
ans[i].org = dest;
ans[i].len = 0;
continue;
}
// dijskra
k = start[i];
memset(v,false,sizeof(v));
memset(length,0,sizeof(length));
for(j=1;j<=n;j++)
len[j] = map[k][j];
v[k] = true;
while(k!=dest) // find the path
{
min = MAX;
for(j=1;j<=n;j++)
{
if(j==k || v[j])continue;
if(len[j] > len[k]+map[k][j])
{
len[j] = len[k]+map[k][j];
memcpy(pth[j],pth[k],length[k]*4);
length[j]=length[k]+1;
pth[j][length[j-1]] = k; // record path
}
// find the minmam mix tow procedure into one good
if(len[j] < min)
{
min = len[j];
u = j;
}
}
k = u;
v[k] = true;
}
ans[i].len = length[dest];
ans[i].org = start[i];
ans[i].time = len[dest];
memcpy(ans[i].path,pth[dest],len[dest]*4);
}
sort(ans,ans+count);
printf("%s\t%s\t%s\t%s\n","Org","Dest","Time","Path");
for(i=0;i<count;i++)
{
printf("%d\t%d\t%d\t%d",ans[i].org,dest,ans[i].time,ans[i].org);
for(j=0;j<ans[i].len;j++)
printf("\t%d",ans[i].path[j]);
if(dest!=ans[i].org)
printf("\t%d",dest);
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