You are on page 1of 9

GRAFOVI

1.NEUSMERENI GRAF PREKO VEKTORA


#include <iostream>
#include <vector>
using namespace std;
vector <int> NeusmerenGraf[1000];
int main()
{
int n;
cout<<"unesite broj grana: ";
cin>>n;
int a,b;
for(int i=0; i<n; i++){
cout<<"unesite cvorove koje spaja grana broj "<<i<<" :"<<endl;
cin>>a>>b;
NeusmerenGraf[a].push_back(b);
NeusmerenGraf[b].push_back(a);
}
return 0;
}

2.USMERENI GRAF PREKO VEKTORA


#include <iostream>
#include <vector>
using namespace std;
vector <int> UsmerenGraf[1000];
int main()
{
int n;
cout<<"unesite broj grana: ";
cin>>n;
int a,b;
for(int i=0; i<n; i++){
cout<<"unesite cvor iz kog izlazi grana, a zatim cvor u koji ulazi grana broj "<<i<<" :"<<endl;
cin>>a>>b;
UsmerenGraf[a].push_back(b);
}
return 0;
}
GRAFOVI

3.NEUSMERENI GRAF PREKO MATRICE


#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int NeusmereniGraf[1000][1000];
int main()
{
memset(NeusmereniGraf, 0, sizeof NeusmereniGraf);
int n;
cout<<"unesite broj grana: ";
cin>>n;
int a,b;
for(int i=0; i<n; i++){
cout<<"unesite cvorove koje spaja grana broj "<<i<<" :"<<endl;
cin>>a>>b;
NeusmereniGraf[a][b]++;
NeusmereniGraf[b][a]++;
}
return 0;
}

4.USMERENI GRAF PREKO MATRICE


#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int UsmerenGraf[1000][1000];
int main()
{
memset(UsmerenGraf, 0, sizeof UsmerenGraf);
int n;
cout<<"unesite broj grana: ";
cin>>n;
int a,b;
for(int i=0; i<n; i++){
cout<<"unesite cvor iz kojeg izlazi, a zatim cvor u koji ulazi grana broj "<<i<<" :"<<endl;
cin>>a>>b;
UsmerenGraf[a][b]++;
}
return 0;
}
GRAFOVI

5.BFS-kalicanin-VEKTOR
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
bool posecen[1000];
queue<int> susedi;
void bfs(vector<int> v[]){
while(!susedi.empty()){
int c = susedi.front();
if(posecen[c]){
susedi.pop();
}
else{
posecen[c] = true;
cout<<c<<" ";
for(int i = 0; i<v[c].size(); i++){
if(!posecen[v[c].at(i)]){
susedi.push(v[c].at(i));
}
}
}
}
}
int main()
{
int n;
cin>>n;
vector<int> g[n+1];
while(true){
int x,y;
cin>>x;
if(x==-1){
break;
}
cin>>y;
g[x].push_back(y);
g[y].push_back(x);
}
susedi.push(1);
bfs(g);
return 0;
}
GRAFOVI

6.BFS-milos-MATRICA
#include <iostream>
#include <queue>
using namespace std;
bool posecen [6];
bool povezan[6][6];
queue <int> niz;
void BFS(){
niz.push(1);
while(!niz.empty()){
if(posecen[niz.front()]){
niz.pop();
}
else{
posecen[niz.front()]=true;
cout<<niz.front()<<" ";
for(int i=1; i<6; i++){
if(povezan[niz.front()][i]==true && !posecen[i]){
niz.push(i);
}
}
}
}
}
int main()
{
int a=0,b=0;
while(a>-1){
povezan[a][b]=true;
povezan[b][a]=true;
cin>>a>>b;
}
BFS();
return 0;
}
GRAFOVI

7.DFS-kalicanin-VEKTOR
#include <iostream>
#include <vector>
using namespace std;
bool posecen[1000];
void ispisputa(vector<int> v[], int c){
posecen[c] = true;
cout<<c<<" ";
for(int i = 0; i<v[c].size(); i++){
if(!posecen[v[c].at(i)]){
ispisputa(v,v[c].at(i));
}
}
}
int main()
{
int n;
cin>>n;
vector<int> g[n+1];
while(true){
int x,y;
cin>>x;
if(x==-1){
break;
}
cin>>y;
g[x].push_back(y);
g[y].push_back(x);
}
for(int i = 0; i<=n; i++){
cout<<"T"<<i<<":";
for(int j = 0; j<g[i].size(); j++){
cout<<g[i].at(j)<<" ";
}
cout<<endl;
}
ispisputa(g,0);
return 0;
}
GRAFOVI

8.DFS-milos-MATRICA
#include <iostream>

using namespace std;


bool povezan[10][10];
bool posecen[10];
void ispisputa(int x,int n){
cout<<x<<" ";
posecen[x]=true;;
for(int i = 1; i<n+1; i++){
if(povezan[x][i] && !posecen[i] ){
ispisputa(i,n);
}
}
}
int main()
{
int n;
cin>>n;
while(true){
int x,y;
cin>>x;
cin>>y;
povezan[x][y]=true;
povezan[y][x]=true;
if(x<0){
break;
}
}
ispisputa(1,n);
return 0;
}
GRAFOVI

9.DIJKSTRA-kalicanin
#include <iostream>
using namespace std;
const int N = 6;
const int INF = 2000000000;
int g[N][N] = {{0,5,6,0,0,0},{5,0,6,3,4,0},{6,6,0,1,0,0},{0,3,1,0,2,3},{0,4,0,2,0,7},{0,0,0,3,7,0}};
void dijkstra(int c){
bool povezan[N];
int d[N];
for(int i = 0; i<N; i++){
d[i] = INF;
povezan[i] = false;
}
d[c] = 0;
for(int i = 0; i<N; i++){
if(g[c][i]!=0){
d[i] = g[c][i];
}
}
povezan[c] = true;
while(true){
int s = INF;
int ind = -1;
for(int i = 0; i<N; i++){
if(!povezan[i]&&d[i]<s){
s = d[i];
ind = i;
}
}
if(ind==-1){
break;
}
for(int i = 0; i<N; i++){
if(g[ind][i]!=0 && d[ind]+g[ind][i]<d[i]){
d[i] = d[ind]+g[ind][i];
}
}
povezan[ind] = true;
}
for(int i = 0; i<N; i++){
cout<<d[i]<<" ";
}
}
int main()
{
dijkstra(0); return 0; }
GRAFOVI

10.DIJKSTRA-milos-REKURZIJA
#include <iostream>
using namespace std;
const int x = 2147483646;
const int n=6;
bool posecen[n];
int d[n+1]={x,x,x,x,x,x,x+1};
int mat[n][n]={{0,5,6,0,0,0},{5,0,6,3,4,0},{6,6,0,1,0,0,},{0,3,1,0,2,3},{0,4,0,2,0,7},{0,0,0,3,7,0}};
int najmanji(){
int minimal=n;
for(int i=0; i<n; i++){
if(!posecen[i] && d[i]<d[minimal]){
minimal=i;
}
}
return minimal;
}
void pocetak(int a){
d[a]=0;
}
void dijgstr(int a){
posecen[a]=true;
for(int i=0; i<n; i++){
if(i!=a && d[a]+mat[a][i]<d[i] && mat[a][i]!=0){
d[i]=d[a]+mat[a][i];
}
}
if(najmanji()!=n){
dijgstr(najmanji());
}
}
void ipisi(){
for(int i=0; i<n;i++){
cout<<d[i]<<" ";
}
}
void ceo(int a){
pocetak(a);
dijgstr(a);
}
int main()
{
ceo(0);
ipisi();
return 0;
}
GRAFOVI

11.FLOJD-MARSALOV
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
for(int k=0; k<n; k++){
if(tezina[i][k]!=beskonacno && tezina[k][j]!=beskonacno && tezina[i][j]>tezina[i][k]+tezina[k][j]){
tezina[i][j]=tezina[i][k]+tezina[k][j];
}
}
}
}

You might also like