//Write your own contracts here. Currently compiles using solc v0.4.15+commit.bbb8e64f. pragma solidity ^0.4.18; contract SimpleStore { function set(uint _value) public { value = _value; } function get() public constant returns (uint) { return value; } uint[] users; uint num_users=0; mapping (uint => string) usernames; mapping (uint => uint[3][]) account; function registerUser(uint use_id, string user_name) public{ users.push(use_id); num_users+=1; parent.push(-1); dist.push(-1); usernames[use_id]=user_name; } function createAcc(uint user_id1, uint user_id2, uint contri1, uint contri2) public{ account[user_id1].push([contri1, user_id2, contri2]); account[user_id2].push([contri2, user_id1, contri1]); } function getPath() public constant returns (uint[]) { return path; } function shortestPath(uint source, uint destination, uint amount) public{ // if(dist.length==num_users){ // path.push(9); // } for(uint i=0;i<num_users;i++){ parent[i]=-1; dist[i]=-1; // vis[i]=false; path.length=0; queue.length=0; } index=0; queue.push(source); while(true){ uint curr=queue[index]; index+=1; uint len=account[curr].length; for(uint j=0; j<len;j++){ uint v=account[curr][j][1]; if(account[curr][j][0]<amount){ continue; } if(dist[v]==-1 || dist[v]>dist[curr]+1){ dist[v]=dist[curr]+1; queue.push(v); parent[v]=int(curr); } } if(index==queue.length){ break; } } path.push(destination); int curdest=int(destination); while(true){ if(curdest==int(source)){ break; } curdest=parent[uint(curdest)]; if (curdest!=-1){ path.push(uint(curdest)); }else{ path.length=0; break; } } } int[] parent; int[] dist; bool[] vis; uint index; uint[] queue; uint[] path; uint value; }
0.4.18