int _sendMessage(message* msg) { nodeInfo* nodeToSend; //Cannot send a message to itself. if (msg->mdata.destination == thisNode.id) { printf("Cannot send message to itself!\n"); return -1; } nodeToSend = nextNodeInRoute(msg); //printf("[NODE %d] Sending message (%d->%d) to node %d\n", thisNode.id, msg->mdata.source, msg->mdata.destination, nodeToSend->id); //Unknown routing error. if (nodeToSend == NULL) { printf("Unknown routing error!\n"); return -2; } if (connectNode(nodeToSend) != 0) { printf("Couldn't connect to node %d!\n", nodeToSend->id); return -3; } if (msg->mdata.source == thisNode.id) { msg->mdata.messageId = currentMessageId++; } if(msgsnd(nodeToSend->msgid, msg, sizeof(message) - sizeof(long int), 0) == -1) { printf("Error sending message!\n"); return -4; } return 0; }
int solve(vector<int> scores){ int vertexCnt = scores.size() + 1; if(vertexCnt == 2){ return scores[0]; } vector<Node> graph(vertexCnt); buildChain(graph); int maxDegree = vertexCnt - 1; int currentMaxDegree = 2; int currentMaxScore = calcScore(scores, graph); while(currentMaxDegree < maxDegree){ vector<Node*> exceptions; Node* nextAddedTarget = findNode(graph, currentMaxDegree); while(nextAddedTarget != NULL){ exceptions.push_back(nextAddedTarget); Node* nextDepartedTarget = findNotConnected1DegreeNode(graph, exceptions); if(nextDepartedTarget != NULL){ departNode(graph, nextDepartedTarget); connectNode(nextAddedTarget, nextDepartedTarget); currentMaxScore = max(currentMaxScore, calcScore(scores, graph)); nextAddedTarget = findNode(graph, currentMaxDegree); }else{ break; } } currentMaxDegree++; } return currentMaxScore; }
void connect(TreeLinkNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function if (root == NULL) return; TreeLinkNode* last = root; TreeLinkNode* head = NULL; TreeLinkNode* pre = NULL; TreeLinkNode* cur = NULL; while (last != NULL) { connectNode(last -> left, head, pre, cur); connectNode(last -> right, head, pre, cur); last = last -> next; if (last == NULL) { last = head; head = NULL; pre = NULL; cur = NULL; } } }
static void addNodes (void) { pwr_tStatus sts; pwr_tNodeId nid; qcom_sNode node; gdb_sNode* np; gdb_AssumeUnlocked; for (nid = qcom_cNNid; qcom_NextNode(&sts, &node, nid); nid = node.nid) { if ( node.connection != qcom_eNodeConnectionFull) continue; np = addNode(&node); if (node.flags.b.connected) connectNode(np); } }