Какой эффективный способ оптимизации в C - PullRequest
0 голосов
/ 03 июля 2019

Я сталкивался с этим вопросом в конкурсе. Вопрос как ниже.

https://www.screencast.com/t/eWuBxapaA

https://www.screencast.com/t/qqhWUoytyvF0

поэтому в основном существует список узлов, которые указывают на другие узлы. Один узел может указывать только на другой, он не может указывать на более чем один узел, но на узел может указывать несколько узлов, но может иметь только один выйти, как показано на рисунке. Список содержит n значений, представляющих узел, на который указывает каждый i-й узел. Если узел не указывает ни на какой другой узел, он представлен -1. количество узлов N снабжено номерами ячеек от 0 до N-1. Требуется найти узел с максимальным весом, который присутствует в списке. Вес узла - это сумма номеров узлов (i-й индекс) что указывает на это.

Ниже мой код. Что с ним не так? Я что-то пропустил? Если нет, то каким образом я могу оптимизировать это больше?

int main()
{
 long m;  /*this is for no of test cases*/
 long i,j;
 scanf("%ld",&m);
 for(i=0;i<m;i++)
 {
  long n; /*number of nodes*/
  long k=-999,l;  /*k to keep track of max weight and l for the node*/
  scanf("%ld",&n);
  long a[n],b[n];  /*arrays of size n to store nodes*/
  for(j=0;j<n;j++)
  { 
   scanf("%ld",&a[j]);  /*taking inputs of the nodes that points others */
   b[j]=0;  /*initially all indexes are 0 and b array will store the weights*/
  } 
  for(j=0;j<n;j++)
  { 
   if(a[j]==-1)
   {
     /*this will do noting as such nodes point to nothing*/    
   }
   else
   {
     b[a[j]]=b[a[j]]+j+1;  /*updating the weight at a[j]-th index in b array and its j+1 but not just j bcoz j is the index which starts from 0 which is actually the 1st node*/
     if(b[a[j]]>k)
     {
      k=b[a[j]];   /*keeping track of max weight till now*/
      l=j;         /*keeps track of index(node number) with max weight till now*/
     }
   } 
  }
  printf("%ld",l+1);  /*prints the node with max weight for the i-th test case*/ 
 }
 return 0;
}

Спасибо за чтение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...