| ||||||||||
| 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 | |||||||||
WA?????Source
Problem Id:2831 User Id:sail6
Memory:104K Time:0MS
Language:C++ Result:Wrong Answer
Source
#include<iostream.h>
struct edge
{
int fromvex ;
int endvex ;
int weight ;
} ;
struct Node
{
int fromvex ;
int endvex ;
int weight ;
} ;
//const int maxEdgeNum = 1010;
Node node [3100] ;////////// 50
typedef edge edgeset [3100] ;/////////////////50
///const int MaxvertexNum = 1010 ;
typedef int adjmatrix [3100] [ 3100] ;///////5050
adjmatrix GA ;
adjmatrix GA1 ;
const int Maxvalue = 1000010 ;
int Prim ( adjmatrix GA , edgeset &CT , int n )
{
int i , j , k , min , t , m , w ;
for(i = 0 ; i < n - 1 ; i ++ )
{
CT [ i ] . fromvex = 0 ;
CT [ i ] . endvex = i + 1 ;
CT [ i ] . weight = GA [ 0 ] [ i + 1 ] ;
}
for ( k = 1 ; k < n ; k ++ )
{
min = Maxvalue ;
m = k-1;
for( j = k - 1 ; j < n - 1 ; j ++ )
{
if ( CT [j] . weight < min)
{
min = CT [j] . weight ;
m = j ;
}
}
edge temp = CT [ k - 1 ] ;
CT [ k - 1 ] = CT [ m ] ;
CT [ m ] = temp ;
j = CT [ k - 1 ] . endvex ;
for ( i = k ; i < n -1 ; i ++ )
{
t = CT [i] . endvex ;
w = GA [ j ] [ t ];
if ( w < CT [ i ] .weight )
{
CT [ i ] .weight = w ;
CT [ i ] .fromvex = j ;
}
}
}
return 0;
}
edgeset CT1 ;
int main ( )
{
int N , M , Q ;
cin >> N >> M >> Q ;
int i , j ;
int a , b , c ;
edgeset CT ;
for ( i = 0 ; i < N ; i ++ )
{
for ( j = 0 ; j < N ; j ++ )
{
GA [ i ] [ j ] = Maxvalue ;
}
}
for ( i = 0 ; i < M ; i ++ )
{
cin >> a >> b >> c ;
node [ i ] . fromvex = a - 1 ;
node [ i ] .endvex = b - 1 ;
node [ i ]. weight = c ;
// cout << i << ' ' << node [ i ] . fromvex << ' ' << node [ i ] .endvex << ' ' << node [ i ]. weight << endl << endl ;
if ( c < GA [ a - 1 ] [ b - 1 ] )
{
GA [ a - 1 ] [ b - 1 ] = c ;
GA [ b - 1 ] [ a - 1] = c ;
}
}
/* for ( i = 0 ; i < N ; i ++ )
{
for ( j = 0 ; j < N ; j ++ )
{
cout << GA [ i ] [ j ]<<' ';
}
cout<<endl;
}*/
Prim ( GA , CT , N ) ;
// int weight1 = 0 , weight2 = 0 ;
int max=0;
for( i=0 ;i<N-1;i++)
{
if( CT[i].weight>max)
{
max=CT[i].weight;
}
}
int k , w ;
//edgeset CT1 ;
for ( i = 0 ; i < Q ; i ++ )
{
/* for ( int ii = 0 ; ii < N ; ii ++ )
{
for ( j = 0 ; j < N ; j ++ )
{
GA1 [ ii ] [ j ] = GA [ ii ] [ j ] ;
}
//cout<<endl;
}
cin >> k >> w ;
a = node [ k - 1 ] . fromvex ;
b = node [ k - 1 ] . endvex ;
GA1 [ a ] [ b ] = GA1 [ b ] [ a ] = w ;
/* for ( ii = 0 ; ii < N ; ii ++ )
{
for ( j = 0 ; j < N ; j ++ )
{
cout << GA1 [ ii ] [ j ]<<' ';
}
cout<<endl;
}
cout<<endl<<endl;
Prim ( GA1 , CT1 , N ) ;
weight2=0;
for(j=0;j<N-1;j++)
{
weight2+=CT1[j].weight;
}
int flag = 0 ;
for ( j = 0 ; j < N - 1 ; j ++ )
{
if ( a == CT1 [ j ].fromvex && b == CT1 [j].endvex && w == CT1 [ j ].weight &&weight1>=weight2||b == CT1 [ j ].fromvex && a == CT1 [j].endvex && w == CT1 [ j ].weight &&weight1>=weight2)
{
flag=1;
break;
}
}*/
cin>>k>>w;
a = node [ k - 1 ] . fromvex ;
b = node [ k - 1 ] . endvex ;
int J;
int flag=0;
for(j=0;j<N-1;j++)
{
if((a==CT[j].fromvex&&b==CT[j].endvex)||(b==CT[j].fromvex&&a==CT[j].endvex))
{
flag=1;
J=j;
break;
}
}
if (flag==0 && w<=max )///////////////flag==1
{
cout << "Yes" << endl ;
}
else
{
if(flag==1&&w<=CT[J].weight)
{
cout << "Yes" << endl ;
}
else
{
cout << "No" << endl ;
}
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator