Код:
class Vertex{
int lab;
Vertex()
{
lab = 0;
}
Vertex(int x)
{
lab = x;
}
Vertex(Vertex v)
{
lab = v.lab;
}
public int getLabel()
{
return lab;
}
public void setLabel(int x)
{
lab = x;
}
}
class Digraph {
int label1,k;
int[][] matr_Smez;
Vertex[] vert;
Digraph()
{
vert= new Vertex[1000];
matr_Smez=new int[1000][];
for(int i=0;i<1000;i++)
matr_Smez[i]=new int[1000];
}
void addVertex(Vertex v)
{
vert[k].setLabel(v.lab);
k++;
}
void link(Vertex a,Vertex b)
{
matr_Smez[implFind(a)][implFind(b)]=1;
}
int implFind(Vertex a)
{
for(int i = 0; i < k; i++)
if(vert[i].getLabel() == a.getLabel())
return i;
}
void unlink(Vertex a,Vertex b)
{
matr_Smez[implFind(a)][implFind(b)] = 0;
}
void delVertex(Vertex v)
{
for(int i=0;i<k;i++)
for(int j=implFind(v)+1;j<k;j++)
{
matr_Smez[i][j-1] = matr_Smez[i][j];
matr_Smez[j-1][i] = matr_Smez[j][i];
matr_Smez[j][i] = 0;
}
for(int j = implFind(v) + 1; j < k; j++)
{
vert[j-1].lab = vert[j].lab;
}
k--;
}
Vertex[] dfs()
{
impl_dfs(0);
Vertex[] u;
int z = 0;
u=new Vertex[1000];
for(int i = 1; i < k; i++)
{
if(matr_Smez[i][i] == 1)
{ u[z] = vert[i];
z++;
}
}
for(int i = 1; i < k; i++)
{
matr_Smez[i][i] = 0;
}
return u;
}
void impl_dfs(int p)
{
if(matr_Smez[p][p] == 0)
{ matr_Smez[p][p] = 1;
for(int i = p; i < k ; i++)
if(matr_Smez[p][i] != 0)
impl_dfs(i);
}
}
Vertex[] bfs()
{
int[] que = new int[1000];
int start = 0, end = 1;
matr_Smez[0][0] = 1;
while(start != end)
{
for(int i = que[start] + 1; i < k; i++)
if(matr_Smez[que[start]][i] == 1)
{
que[end] = i;
end++;
}
start++;
}
Vertex[] u;
int z = 0;
u = new Vertex[1000];
for(int i = 1; i < k; i++)
{
if(matr_Smez[i][i] == 1)
{ u[z] = vert[i];
z++;
}
}
for(int i = 1; i < k; i++)
{
matr_Smez[i][i] = 0;
}
return u;
}
}
class Graph extends Digraph
{
void link(Vertex a,Vertex b)
{
matr_Smez[implFind(a)][implFind(b)] = 1;
matr_Smez[implFind(b)][implFind(a)] = 1;
}
void unlink(Vertex a,Vertex b)
{
matr_Smez[implFind(a)][implFind(b)] = 0;
matr_Smez[implFind(b)][implFind(a)] = 0;
}
}
public class Main {
public static void main(String[] args) {
Digraph gr;
gr.addVertex(1);
gr.addVertex(2);
gr.addVertex(3);
gr.link(1,2);
gr.link(1,3);
Vertex[] u;
u=gr.dfs();
System.out.println("ololo ");
for(int i = 0; u[i].getLabel() != 0; i++)
System.out.print(u[i].getLabel());
gr.unlink(1, 3);
u=gr.bfs();
System.out.println("ololo ");
for(int i = 0; u[i].getLabel() != 0; i++)
System.out.print(u[i].getLabel());
Graph gr1;
gr1.addVertex(1);
gr1.addVertex(2);
gr1.addVertex(3);
gr1.link(1,2);
gr1.link(1,3);
Vertex[] u;
u=gr1.dfs();
System.out.println("ololo ");
for(int i = 0; u[i].getLabel() != 0; i++)
System.out.print(u[i].getLabel());
gr1.unlink(1, 3);
u=gr1.bfs();
System.out.println("ololo");
for(int i = 0; u[i].getLabel() != 0; i++)
System.out.print(u[i].getLabel());
}
}
Выдает 14 ошибок по типу этой:
Код:
Main.java:157: addVertex(Vertex) in Digraph cannot be applied to (int)
gr.addVertex(1);
^
Как я понимаю, я передаю инты, а надо передавать типа Vertex, ну как я писал класс Vertex, он должен принимать и обрабатывать инты вначале, в чем я не прав и как исправить, подскажите, пожалуйста.