CODE
Java
C++
Python
import java.util.*; class Graph { List<String> cities; HashMap<String, ArrayList<String>> adjacencyList; public Graph(List<String> cities) { this.cities = cities; adjacencyList = new HashMap<>(); for (String city : this.cities) { adjacencyList.put(city, new ArrayList<>()); } } public void addEdge(String source, String destination) { this.adjacencyList.get(source).add(destination); this.adjacencyList.get(destination).add(source); // comment this line for directed graph } public void printGraph() { System.out.println("Adjacency List of Undirected Graph"); for (String city : this.cities) { System.out.print(city + " => "); for(String nbrCity : adjacencyList.get(city)) { System.out.print(nbrCity + " "); } System.out.println(); } } public static void main( String args[] ) { List<String> cities = new ArrayList<>(); cities.add("Delhi"); cities.add("Mumbai"); cities.add("Bangalore"); cities.add("Hyderabad"); Graph g = new Graph(cities); g.addEdge("Delhi", "Mumbai"); g.addEdge("Delhi", "Bangalore"); g.addEdge("Mumbai", "Hyderabad"); g.addEdge("Mumbai", "Bangalore"); g.printGraph(); } }
#include<bits/stdc++.h> using namespace std; class Graph { vector<string> cities; unordered_map<string, vector<string>> adjacencyList; public: Graph(vector<string> c) { cities = c; for(auto city : cities) { vector<string> v; adjacencyList[city] = v; } } void addEdge(string source, string destination) { adjacencyList.push_back(destination); adjacencyList[destination].push_back(source); // comment this line for directed graph } void printGraph() { cout << "Adjacency List of Undirected Graph" << endl; for (auto city : cities) { cout << city << " => "; for(auto nbrCity : adjacencyList[city]) { cout << nbrCity << " "; } cout << endl; } } }; int main() { vector<string> cities = {"Delhi", "Mumbai", "Bangalore", "Hyderabad"}; Graph g(cities); g.addEdge("Delhi", "Mumbai"); g.addEdge("Delhi", "Bangalore"); g.addEdge("Mumbai", "Hyderabad"); g.addEdge("Mumbai", "Bangalore"); g.printGraph(); return 0; }
class Graph: def __init__(self, cities): self.cities = cities self.adjacency_list = dict() for city in self.cities: self.adjacency_list[city] = list() def add_edge(self, source, destination): self.adjacency_list.append(destination) self.adjacency_list[destination].append(source) # comment this line for directed graph def print_graph(self): print("Adjacency List of Undirected Graph") for city in self.cities: print(city, " => ", end = " ") for nbr_city in self.adjacency_list[city]: print(nbr_city, end = " ") print() if __name__ == '__main__': cities = ["Delhi", "Mumbai", "Bangalore", "Hyderabad"] g = Graph(cities); g.add_edge("Delhi", "Mumbai") g.add_edge("Delhi", "Bangalore") g.add_edge("Mumbai", "Hyderabad") g.add_edge("Mumbai", "Bangalore") g.print_graph()
Output:
Adjacency List of Undirected Graph Delhi => Mumbai Bangalore Mumbai => Delhi Hyderabad Bangalore Bangalore => Delhi Mumbai Hyderabad => Mumbai