public void remove_node(int id){
        //nodes.get(id).delete();
        List<Integer> remove_edges = new ArrayList();
        for(Edge e : edges.values()){
            if(e.from().get_id()==id || e.to().get_id()==id){
                remove_edges.add(e.get_id());
            }
        }
        
        for(int i : remove_edges){
            remove_edge(i);
        }
        if(id == _source.get_id()) _source = null;
        if(id == _sink.get_id()) _sink = null;
        nodes.remove(id);
    }