- Drgee sum ============
- 2*(degree counter)
- Coming soon....
2.handshaking lemma ===================
- even node always get odd number of degree
- In degree and out degree
- sum of indegree = sum of outdegree
- Calculating Complexity of graph
- V = vertex , E = edges
- O(V+E) or O(V^2)
- How to store Graph ---------------------
- Coming soon...
- Adjacency Matrix
include<bits/stdc++.h>
using namespace std;
int g[100][100];
int main()
{
int n,e;cin >>n>>e; while(e--){ int u,v; cin >> u >> v; //int u,v;cin >> u << v; g[u][v]=1; g[v][u]=1; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cout << g[i][j] << " "; } cout << endl; } if(g[4][2]){ cout << "YES\n"; } else cout << "NO\n";
}
- Adjacency List
include<bits/stdc++.h>
using namespace std;
const int N = 105;
vector g[N];
int indgr[N],outdgr[N];
int main()
{
int n,e;cin >>n>>e; while(e--){ int u,v; cin >> u >> v; // finding indgree and outdgree for array indgr[v]++; outdgr[u]++; g[u].push_back(v); //g[v].push_back(u); } /* // find the list for(auto it:g[2]){ cout << it << " "; } */ // finding indgree loop for(int i=0;i<=n;i++){ cout << indgr[i] <<" "; } cout << "\n"; // finding outdegree loop for(int i=0;i<=n;i++){ cout << outdgr[i] <<" "; } // finding the dgree using adjcenncy list /* for(int i=0;i<=n;i++){ cout << g[i].size() <<" "; } cout << '\n'; */
}
- DFS:
include<bits/stdc++.h>
define itsmdshahin ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
define ll long long
using namespace std;
const int N= 1e5+9;
bool vis[N];
vector g[N] ;
void dfs(int s){
vis[s] = true; for(auto it:g[s]){ if(!vis[it]){ cout <<"VISITED "<<it << endl; dfs(it); } }
}
int main()
{
int n,m;cin>> n>>m; while(m--){ int x,y;cin>>x>>y; g[x].push_back(y); g[y].push_back(x); } int s;cin>>s; dfs(s); for(int i=1;i<=n;i++){ if(!vis[i]){ cout << "DISCONNETED GRAPH\n"; return 0; } }
}
- CONNECTED COMPONETED
include<bits/stdc++.h>
define itsmdshahin ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
define ll long long
using namespace std;
const int N= 1e5+9;
bool vis[N];
vector g[N] ;
void dfs(int s){
vis[s] = true; for(auto it:g[s]){ if(!vis[it]){ dfs(it); } }
}
int main()
{
int n,m;cin>> n>>m; while(m--){ int x,y;cin>>x>>y; g[x].push_back(y); g[y].push_back(x); } //int ans=0,s;cin>>s; int ans=0; for(int i=1;i<=n;i++){ if(!vis[i]){ dfs(i); ++ans; } } cout << "Connected Compoments: " << ans << endl;
}
- BFS implement?
include<bits/stdc++.h>
using namespace std;
const int N=1e5+9;
vector G[N];
bool Vis[N];
int main(){
int n,e;cin>>n>>e; while(e--){ int x,y;cin>>x>>y; G[x].push_back(y); G[y].push_back(x); } queue <int> q; q.push(1); Vis[1]=true; while(!q.empty()){ int u = q.front(); q.pop(); for(auto it:G[u]){ if(!Vis[it]){ q.push(it); Vis[v]=true; } } }
}
- BFS Component find Graph?
include<bits/stdc++.h>
using namespace std;
const int N=1e5+9;
vector G[N];
bool Vis[N];
queue q;
void bfs(int n){
q.push(n); Vis[n]=true; while(!q.empty()){ int u = q.front(); q.pop(); for(auto it:G[u]){ if(!Vis[it]){ q.push(it); Vis[it]=true; } } }
}
int main(){
int n,e;cin>>n>>e; while(e--){ int x,y;cin>>x>>y; G[x].push_back(y); G[y].push_back(x); } int ans=0; for(int i=0;i<n;i++){ if(!Vis[i]){ bfs(i); ++ans; } } cout << ans << endl;
}
- BFS Distance find Graph Theory?
include<bits/stdc++.h>
using namespace std;
const int N=1e5+9;
vector G[N];
bool Vis[N];
vector dis(N);
int main(){
int n,e;cin>>n>>e; while(e--){ int x,y;cin>>x>>y; G[x].push_back(y); G[y].push_back(x); } queue <int> q; q.push(1); Vis[1]=true; dis[1]=0; while(!q.empty()){ int u = q.front(); q.pop(); for(auto it:G[u]){ if(!Vis[it]){ q.push(it); dis[it] = dis[u]+1; Vis[it]=true; } } } for(int i=1;i<=n;i++){ cout << dis[i] << " "; } cout << endl;
}
12 BFS Path find Graph Theory? ------------------------------
Coming soon....
13 Bicoloring and Bipartite Graph ---------------------------------
include<bits/stdc++.h>
using namespace std;
const int N = 105;
vector g[N];
int indgr[N],outdgr[N];
bool vis[N],col[N],ok;
void dfs(int u)
{
vis[u]=true; for(auto v:g[u]) { if(!vis[v]) { col[v] = col[u]^1; dfs(v); } else { if(col[u]==col[v])ok=false; } }
}
int main()
{
int n,e; cin >>n>>e; while(e--) { int u,v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } ok = true; for(int i=1; i<=n; i++) { if(!vis[i])dfs(i); } if(ok) { cout << "YES\n"; } else cout << "NO\n";
}