using
System;
using
System.Collections.Generic;
using
System.Collections;
using
System.Linq;
static
class
Globals
{
public
static
int
MAX_V = 100;
public
static
int
[] color =
new
int
[MAX_V];
public
static
int
[] vis =
new
int
[MAX_V];
}
class
Graph
{
public
int
V;
public
int
E;
public
List<KeyValuePair<
int
,
int
>>[] adj;
public
Graph(
int
v,
int
e)
{
V = v;
E = e;
adj =
new
List<KeyValuePair<
int
,
int
>>[Globals.MAX_V];
for
(
int
i = 0; i < adj.Length; ++i)
{
adj[i] =
new
List<KeyValuePair<
int
,
int
>>();
}
}
public
void
addEdge(
int
a,
int
b,
int
c)
{
adj[a].Add(
new
KeyValuePair<
int
,
int
>(b, c));
adj[b].Add(
new
KeyValuePair<
int
,
int
> (a, c));
}
public
void
dfs(
int
x,
int
y,
int
col)
{
if
(Globals.vis[x] == 1)
return
;
Globals.vis[x] = 1;
if
(x == y)
{
Globals.color[col] = 1;
return
;
}
for
(
int
i = 0; i < adj[x].Count; i++)
if
(adj[x][i].Value == col)
dfs(adj[x][i].Key, y, col);
}
public
int
UniColorPaths(
int
a,
int
b)
{
for
(
int
i = 0; i < adj[a].Count; i++)
{
dfs(a, b, adj[a][i].Value);
for
(
int
indx = 0; indx < Globals.MAX_V; indx++){
Globals.vis[indx] = 0;
}
}
int
cur = 0;
for
(
int
i = 0; i <= E; i++)
cur += Globals.color[i];
return
(cur);
}
}
class
HelloWorld {
static
void
Main() {
Graph g =
new
Graph(5, 7);
g.addEdge(1, 2, 1);
g.addEdge(1, 3, 2);
g.addEdge(2, 3, 3);
g.addEdge(2, 4, 2);
g.addEdge(2, 5, 4);
g.addEdge(3, 5, 3);
g.addEdge(4, 5, 2);
int
s = 2;
int
d = 5;
Console.Write(
"Number of unicolored paths : "
);
Console.WriteLine(g.UniColorPaths(s, d));
}
}