| ||||||||||
| 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 | |||||||||
why WA??prim#include <stdio.h>
int vexnum,roadnum;
int adj[100][100],mincost[100],res=0;
bool linked[100];
void createCraph()
{
scanf("%d",&vexnum);
for(int i=0;i<vexnum;i++)
{
mincost[i]=1005;
for(int j=0;j<vexnum;j++)
scanf("%d",&adj[i][j]);
}
scanf("%d",&roadnum);
int a,b,temp=roadnum;
while(temp--)
{
scanf("%d%d",&a,&b);
linked[a-1]=linked[b-1]=1;
}
if(roadnum)
{
for(int k=0;k<vexnum;k++)
for(int j=0;j<vexnum;j++)
if(!linked[k]&&linked[j]&&adj[k][j]<mincost[k])
mincost[k]=adj[k][j];
}
}
void prim()
{
int min,id=-1,i,j,k;
for(i=1;i<vexnum-roadnum;i++)
{
min=1005;
for(j=0;j<vexnum;j++)
if(mincost[j]<min)
{
min=mincost[j];
id=j;
}
if(id>=0)
{
res+=min;
linked[id]=1;
mincost[id]=1005;
for(j=0;j<vexnum;j++)
if(!linked[j]&&adj[j][id]<mincost[j])
mincost[j]=adj[j][id];
}
else
{
int id1,id2;
for(j=0;j<vexnum;j++)
for(k=0;k<vexnum;k++)
if(j!=k&&adj[j][k]<min)
{
min=adj[j][k];
id1=j;
id2=k;
}
linked[id1]=linked[id2]=1;
mincost[id1]=mincost[id2]=1005;
res+=min;
for(k=0;k<vexnum;k++)
for(j=0;j<vexnum;j++)
if(!linked[k]&&linked[j]&&adj[k][j]<mincost[k])
mincost[k]=adj[k][j];
}
}
}
int main(int argc, char* argv[])
{
createCraph();
prim();
printf("%d\n",res);
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator