#include <algorithm>
#include <cassert>
#include <map>
#include <iostream>
#include <iterator>
#include <sstream>
#include <vector>

int main()
{
	std::istream& ifs = std::cin; // use std::ifstream as you currently do
	// ifs.open(...); // ideone cannot read file so we read stdin instead
	
	// vertex -> adjacent vertices
	std::map<int, std::vector<int>> map;
	
	std::string line;
	while (std::getline(ifs, line))
	{
		std::istringstream is(line);
		std::vector<int> ns;
		
		// assuming we know for sure the file is valid
		auto it = std::istream_iterator<int>(is);
		auto end = std::istream_iterator<int>();
		auto vertex = *(it++); // and not ++it !
		map[vertex] = std::vector<int>(it, end);
	}
	
	for (auto const& pair: map)
	{
		std::cout << "Vertex " << pair.first << " has the following neighbour: ";
		std::copy(pair.second.begin(), pair.second.end(), 
		          std::ostream_iterator<int>(std::cout, " "));
		std::cout << "\n";
	}
	
	return 0;
}