You are on page 1of 6

Toán rời rạc chương 2

Câu 1: Từ ma trận kề chuyển sang danh sách kề và danh sách cạnh;


Với đồ thị vô hướng :
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cout << "Nhap so dinh : " ;
cin >> n;
cout << endl;
bool a[n+1][n+1];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin >> a[i][j];
}
}
vector<vector<int>> f(n+1);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j] == 1) f[i].push_back(j);
}
}
cout << "Danh sach ke : " << endl;
for(int i=1;i<=n;i++){
string s = "Ke(" +to_string(i) + ") = {";
for(auto j : f[i]){
s += to_string(j)+";";
}
s.pop_back();
s+="}";
cout << s << endl;
}
cout << "Danh sach canh : " << endl;
cout << "Dinh dau " << "Dinh cuoi" << endl;
for(int i=1;i<=n;i++){
for(auto j : f[i]){
if(j > i) cout << i << " " << j << endl;
}
}
return 0;
}
Với đồ thị có hướng :
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;

cout << "Nhap so dinh : " ;


cin >> n;
cout << endl;
bool a[n+1][n+1];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin >> a[i][j];
}
}
vector<vector<int>> f(n+1);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(a[i][j] == 1) f[i].push_back(j);
}
}
cout << "Danh sach ke : " << endl;
for(int i=1;i<=n;i++){
string s = "Ke(" +to_string(i) + ") = {";
for(auto j : f[i]){
s += to_string(j)+";";
}
s.pop_back();
s+="}";
cout << s << endl;
}
cout << "Danh sach canh : " << endl;
cout << "Dinh dau " << "Dinh cuoi" << endl;
for(int i=1;i<=n;i++){
for(auto j : f[i]){
cout << i << " " << j << endl;
}
}
return 0;
}
Câu 2: Danh sách kề sang ma trận kề và danh sách cạnh;
Với đồ thị vô hướng :
#include<bits/stdc++.h>
using namespace std;
int main(){
cout << "Nhap so dinh : ";
int n;
cin >> n;
vector<vector<int>> f(n+1);
bool a[n+1][n+1]={};
for(int i=1;i<=n;i++){
cout << "So canh cua Ke(" << i << ") la : ";
int x;

cin >> x;
for(int j=1;j<=x;j++){
int m;
cin >> m;
f[i].push_back(m);
a[i][m] =1;
}
}
cout << "Ma tran ke : " << endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout << a[i][j] << " ";
}
cout << endl;
}
cout << "Danh sach canh : " << endl;
cout << "Dinh dau " << "Dinh cuoi" << endl;
for(int i=1;i<=n;i++){
for(auto j : f[i]){
if(j > i) cout << i << " " << j << endl;
}
}
return 0;
}
Với đồ thị có hướng:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout << "Nhap so dinh : ";
int n;
cin >> n;
vector<vector<int>> f(n+1);
bool a[n+1][n+1]={};
for(int i=1;i<=n;i++){
cout << "So canh cua Ke(" << i << ") la : ";
int x;
cin >> x;
for(int j=1;j<=x;j++){
int m;
cin >> m;
f[i].push_back(m);
a[i][m] =1;
}
}
cout << "Ma tran ke : " << endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){

cout << a[i][j] << " ";


}
cout << endl;
}
cout << "Danh sach canh : " << endl;
cout << "Dinh dau " << "Dinh cuoi" << endl;
for(int i=1;i<=n;i++){
for(auto j : f[i]){
cout << i << " " << j << endl;
}
}
return 0;
}
Câu 3: Từ danh sách cạnh chuyển sang ma trận kề và danh sách kề
Với đồ thị vô hướng:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout << "Nhap so dinh : " ;
int n;
cin >> n;
cout << "Nhap so canh : ";
int c;
cin >> c;
bool a[n+1][n+1]={};
vector<vector<int>> f(n+1);
int x,y;
for(int i=1;i<=c;i++){
cin >> x >> y;
a[x][y] =1;
a[y][x] =1;
}
cout << "Ma tran ke : " << endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout << a[i][j] << " ";
if(a[i][j] == 1) f[i].push_back(j);
}
cout << endl;
}
cout << "Danh sach ke : " << endl;
for(int i=1;i<=n;i++){
string s = "Ke(" +to_string(i) + ") = {";
for(auto j : f[i]){
s += to_string(j)+";";
}
s.pop_back();

s+="}";
cout << s << endl;
}
}
Với đồ thị có hướng:
#include<bits/stdc++.h>
using namespace std;
int main(){
cout << "Nhap so dinh : " ;
int n;
cin >> n;
cout << "Nhap so canh : ";
int c;
cin >> c;
bool a[n+1][n+1]={};
vector<vector<int>> f(n+1);
int x,y;
for(int i=1;i<=c;i++){
cin >> x >> y;
a[x][y] =1;
}
cout << "Ma tran ke : " << endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout << a[i][j] << " ";
if(a[i][j] == 1) f[i].push_back(j);
}
cout << endl;
}
cout << "Danh sach ke : " << endl;
for(int i=1;i<=n;i++){
string s = "Ke(" +to_string(i) + ") = {";
for(auto j : f[i]){
s += to_string(j)+";";
}
s.pop_back();
s+="}";
cout << s << endl;
}
}

You might also like