这个代码有问题
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
/*
5 5
4 3 5 6 1
1 2 1
1 4 1
2 3 2
3 5 1
4 5 2
*/
int qmin(int p,int q)
{
return p<q?p:q;
}
int qmax(int p,int q)
{
return p>q?p:q;
}
int main()
{
int min[101][101],max[101][101],n,m,i,j,k,t1,t2,t3,a[101],zuida,t;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&a);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i!=j)
{
min[j]=-1;
max[j]=-1;
}
else
{
min[j]=a;
max[j]=a;
}
}
}
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&t1,&t2,&t3);
min[t1][t2]=qmin(a[t1],a[t2]);
max[t1][t2]=qmax(a[t1],a[t2]);
if(t3==2)
{
min[t2][t1]=qmin(a[t1],a[t2]);
max[t2][t1]=qmax(a[t1],a[t2]);
}
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(min[k]!=-1 && min[k][j]!=-1)
{
if(min[j]==-1)
{
t=qmin(a,a[j]);
t=qmin(t,a[k]);
min[j]=t;
}
else
{
t=qmin(a,a[j]);
t=qmin(t,a[k]);
min[j]=qmin(min[j],a[k]);
}
}
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
if(max[k]!=-1 && max[k][j]!=-1)
{
if(max[j]==-1)
{
t=qmax(a,a[j]);
t=qmax(t,a[k]);
max[j]=t;
}
else
{
t=qmax(a,a[j]);
t=qmax(t,a[k]);
max[j]=qmax(max[j],t);
}
}
}
printf("\n\n\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%3d ",min[j]);
}
printf("\n");
}
printf("\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%3d ",max[j]);
}
printf("\n");
}
zuida=0;
for(i=1;i<=n;i++)
{
if(max[n]-min[1]>zuida && max[n]!=-1 && min[1]!=-1)
zuida=max[n]-min[1];
}
printf("%d",zuida);
system("pause");
return 0;
}
[/mw_shl_code]
|