HDU 1698 Just a Hook

#include  < iostream >
#define  MAXN 100001
using   namespace  std;

int  OP[MAXN][ 3 ];
int  JUMP[MAXN];
int  COLOR[MAXN];

int  main()
{
    
int  cas, ans, n, q, temp;
    
int  i, j, k;
    
    scanf(
" %d " & cas);
    
for  (j  =   1 ; j  <=  cas; j ++ )
    {
        scanf(
" %d %d " & n,  & q);
        
for  (i  =   1 ; i  <=  n; i ++ )
        {
            COLOR[i] 
=   1 ;
            JUMP[i] 
=  i;
        }
        
for  (i  =   0 ; i  <  q; i ++ )
            scanf(
" %d %d %d " & OP[i][ 0 ],  & OP[i][ 1 ],  & OP[i][ 2 ]);
        
for  (i  =  q  -   1 ; i  >=   0 ; i -- )
        {
            
for  (k  =  OP[i][ 0 ]; k  <=  OP[i][ 1 ]; JUMP[temp]  =  OP[i][ 1 +   1 )
            {
                temp 
=  k;
                
if  (JUMP[k]  !=  k)
                    k 
=  JUMP[k];
                
else
                    COLOR[k
++ =  OP[i][ 2 ];
            }
        }
        
for  (i  =   1 , ans  =   0 ; i  <=  n; i ++ )
            ans 
+=  COLOR[i];
        printf(
" Case %d: The total value of the hook is %d.\n " , j, ans);
    }
    
return   0 ;
}

你可能感兴趣的:(HDU)