/* testINPUTWGRAPH.c */

#include <stdio.h>
int INPUTWGRAPH(int*,int*,int*,char*);

#define NN 1000

void main(void)
{
 int K,N,
     A[NN],B[NN],W[NN];
 char
     WG[]= "[-1,2,3,4,5,#4,5,2,12,  -2,3,5,#3,1,   -3,4,8,#1,13,  -4,6,#11,/"
            "-5,7,8,#6,9,  -6,8,#8,  -7,8,#7]";

  N = INPUTWGRAPH(A,B,W,WG);
  printf("%d weighted links\n",N);

 for (K=0; K<N; K++) printf("%3d,",A[K]); puts("");
 for (K=0; K<N; K++) printf("%3d,",B[K]); puts("");
 for (K=0; K<N; K++) printf("%3d,",W[K]); puts("");



 getchar();
}
  /****************************************/

int INPUTWGRAPH(int *P, int *Q, int *R, char *WG)
{
 int I,J,K,TCNT=0,CNT;

 I=0;
NEWCLUSTER:
 while (WG[I]==' ') I++;            /* pass over any blanks */
 if (WG[I]==']') {*P=0; *Q=0; *R=0; return TCNT;}     /* found ] = end of data */

 while (WG[I]!='-')I++;            /* start with negative integer */
  I++; K=0;
  while (WG[I]!=',') {K = 10*K + WG[I]-48; I++;}
  *P=J=K; CNT=0;                        /* WG[I] = , */
LP:
  I++;
  if (WG[I] == '#') goto WEIGHTS;
  K=0; while (WG[I]!=',') {K = 10*K + WG[I]-48; I++;}
  *Q=K; *P=J; CNT++; TCNT++;     TCNT=TCNT;  /* needed to use TCNT */
  P++; Q++;
  goto LP;

WEIGHTS:
  while (CNT>0)
   {
    I++; if (WG[I]==',') I++;
    K=0; while ((WG[I]>='0') && (WG[I]<='9')) {K = 10*K + WG[I]-48; I++;}
    *R=K; R++;
    CNT--;
   }

 goto NEWCLUSTER;

}

