package timus; import java.util.*; /** * Created by sherxon on 2016-11-23. */ public class TwoTeams1106 { public static void main(String[] args) { TGraph graph= new TGraph(); Scanner in = new Scanner(System.in); int n=Integer.parseInt(in.nextLine()); for (int i = 1; i <=n ; i++) graph.addVertex(i); for (int i = 1; i <= n; i++) { String[] s=in.nextLine().split(" "); for (String s1 : s) { int node=Integer.parseInt(s1); if(node!=0) graph.addEdge(i, node); } } for (Integer v : graph.visited.keySet()) { if(!graph.visited.get(v))graph.dfs(v); } System.out.println(graph.firstGroupCount); for (Integer vertex : graph.groups.keySet()) if(graph.groups.get(vertex)) System.out.print(vertex +" "); } public static class TGraph{ Map<Integer, Set<Integer>> map= new HashMap<>(); Map<Integer, Boolean> visited=new HashMap<>(); Map<Integer, Boolean> groups=new HashMap<>(); int firstGroupCount=0; public void addVertex(Integer v){ map.put(v, new HashSet<>()); visited.put(v, false); groups.put(v, false); } public void addEdge(Integer a, Integer b){ map.get(a).add(b); map.get(b).add(a); } public void dfs(Integer start){ visited.put(start, true); for (Integer integer : map.get(start)) { if(!visited.get(integer)){ visited.put(integer, true); groups.put(integer, !groups.get(start)); firstGroupCount += groups.get(integer) ? 1 : 0; dfs(integer); } } } } }