Not much of an OR person myself, but if you have SAS/OR, you can do this
data have;
infile datalines delimiter=',';
input id1 $ id2 $;
datalines;
M,A
A,B
C,D
B,C
V,W
W,X
X,Y
Y,Z
;
proc optnet data_links = have(rename=(id1=from id2=to))
out_nodes = temp(rename=concomp=group);
concomp;
run;
proc sql;
create table want as
select have.*, temp.group
from have, temp
where have.id1 = temp.node;
quit;