Faits :
A.
Le 26 janvier 2018, le Département du développement territorial et de l'environnement du canton de Neuchâtel (ci-après : le Département), par son Service des ponts et chaussées (ci-après : le Service), a lancé un appel d'offre en procédure ouverte portant sur un marché public de travaux de génie civil visant à l'assainissement et au réaménagement de la chaussée de la route cantonale traversant le village de Chézard-Saint-Martin. L'offre de A._ SA et celle de B._ SA ont obtenu le même résultat de 430 points.
Par décision du 12 avril 2018, prenant en compte l'offre présentant le prix le plus bas, le Département a adjugé le marché à B._ SA pour un montant de 5'337'266 fr. 45 (TTC). L'offre de A._ SA a été classée au 2e rang.
A._ SA a déposé un recours contre la décision d'adjudication du 12 avril 2018 auprès du Tribunal cantonal du canton de Neuchâtel. Elle concluait à ce que le marché lui soit attribué et à l'octroi de l'effet suspensif. Elle se plaignait de motivation insuffisante et de la violation des principes d'intangibilité des offres, de la transparence et de l'égalité de traitement : l'adjudicataire aurait dû être exclu au vu des commentaires et remarques figurant sur son offre; le pouvoir adjudicateur n'avait pas dressé le procès-verbal des séances de clarification des 21 et 26 mars 2018 avec l'adjudicataire; l'adjudicataire avait modifié son offre postérieurement au délai de dépôt des offres par un courrier adressé au pouvoir adjudicateur le 28 mars 2018. Elle se plaignait également de ce que sa variante avait été écartée.
Par arrêt du 13 juin 2018, rendant la requête d'effet suspensif sans objet, le Tribunal cantonal du canton de Neuchâtel a rejeté le recours. Les commentaires ajoutés par l'adjudicataire dans son offre ne constituaient pas une modification inadmissible de l'offre et n'étaient pas de nature à modifier le résultat de l'adjudication. Le pouvoir adjudicateur pouvait exclure la variante proposée par le soumissionnaire évincé qui proposait des tuyaux en PVC au lieu de tuyaux en PP, ce qui constituait, selon le mémo complémentaire du bureau d'ingénieur du 27 avril 2018, un changement de produit. La notation des offres concernant le critère d'adjudication 12 (qualité et adéquation des solutions techniques proposées pour l'exécution du marché) n'était pas critiquable. L'absence de procès-verbal relatant le contenu des séances de clarification des 21 et 26 mars 2018 avec l'adjudicataire violait le principe de transparence mais ce vice n'avait pas eu d'influence sur le marché, puisqu'il s'agissait uniquement d'une séance de clarification destinée à déterminer si les remarques figurant dans l'offre devaient conduire à son exclusion du marché.
Par arrêt 2D_33/2018 du 13 novembre 2018, le Tribunal fédéral a, sur recours constitutionnel subsidiaire de A._ SA, annulé l'arrêt rendu le 13 juin 2018 par le Tribunal cantonal du canton de Neuchâtel pour déni de justice formel, un grief dûment formulé ayant été omis par l'instance précédente, et renvoyé la cause pour nouvelle décision au sens des considérants.
Le 25 août 2018, le contrat de travaux de génie civil visant à l'assainissement et au réaménagement de la chaussée de la route cantonale traversant le village de Chézard-Saint-Martin a été conclu avec B._ SA. Le 20 décembre 2018, A._ SA a modifié ses conclusions concluant au caractère illicite de la décision d'adjudication du 12 avril 2018.
B.
Par arrêt du 18 juillet 2019, le Tribunal cantonal du canton de Neuchâtel a une nouvelle fois rejeté le recours. Après avoir reproduit les considérants de l'arrêt qu'il avait rendu le 13 juin 2018, le Tribunal cantonal s'est saisi du grief omis qui dénonçait une modification prohibée de l'offre de l'adjudicataire, contenue dans la lettre du 28 mars 2018 de l'adjudicataire au pouvoir adjudicateur et l'a rejeté : l'offre de B._ SA répondait aux exigences de cahier des charges. En particulier, elle prévoyait un fraisage et la fourniture de graves conformément au cahier des charges, tandis que le rapport technique fournit avec l'offre traitait, dans certains passages, de dégrappage. Lors de la séance de clarification, l'adjudicataire avait confirmé qu'elle exécuterait son offre conformément au cahier des charges, de sorte qu'elle avait pu indiquer qu'il fallait considérer comme nuls les passages du rapport technique traitant du dégrappage. Le courrier du 28 mars 2018 ne modifiait par conséquent pas l'offre mais confirmait plutôt qu'elle serait réalisée selon le cahier des charges et selon les conditions offertes dans ses dossiers. Il n'y avait par conséquent pas de violation du principe de l'intangibilité des offres.
C.
Agissant par la voie du recours constitutionnel subsidiaire, A._ SA demande au Tribunal fédéral, sous suite de frais et dépens, d'annuler l'arrêt rendu le 18 juillet 2019 par le Tribunal cantonal du canton de Neuchâtel et de constater l'illicéité de la décision d'adjudication du 12 avril 2018. Elle se plaint d'arbitraire dans la constatation et l'appréciation de faits pertinents et dans l'application des principes de la transparence, de l'égalité de traitement et de l'impartialité.
Le Tribunal cantonal et le Département du développement territorial et de l'environnement du canton de Neuchâtel et B._ SA renoncent à déposer des observations.

Considérant en droit :
1.
Le Tribunal fédéral examine d'office sa compétence (<ref-law>). Il contrôle librement la recevabilité des recours qui lui sont soumis (<ref-ruling> consid. 1 p. 186).
1.1. Il n'est pas contesté que seule la voie du recours constitutionnel subsidiaire est ouverte en l'espèce (cf. sur cette question déjà l'arrêt 2D_33/2018 du 13 novembre 2018).
1.2. La recourante est la destinataire de l'arrêt attaqué (<ref-law>). Conformément à l'<ref-law>, il faut également qu'elle ait un intérêt juridique à l'annulation ou à la modification de celle-ci. Il a déjà été établi que la recourante a qualité pour recourir puisqu'elle a obtenu le même nombre de points que l'adjudicataire et a été évincée uniquement parce qu'à qualifications égales, le prix qu'elle offrait était plus élevé que celui de l'adjudicataire (arrêt 2D_33/2018 du 13 novembre 2018 consid. 1.2). La passation du contrat d'assainissement de la route ne supprime pas tout intérêt actuel au présent recours, qui peut consister dans le constat de l'illicéité, cas échéant, de l'adjudication, en lien avec une éventuelle action en dommages-intérêts (cf. <ref-ruling> consid. 6.3 p. 313; <ref-ruling> consid. 4.6 p. 31; <ref-ruling> consid. 1.2.2 p. 317; art. 18 al. 2 de l'accord intercantonal sur les marchés publics du 25 novembre 1994, modifié le 15 mars 2001 [AIMP]; art. 9 al. 3 de la loi fédérale du 6 octobre 1995 sur le marché intérieur [LMI; RS 943.02]), ce à quoi a précisément conclu la recourante.
1.3. Formé contre un arrêt d'un tribunal supérieur statuant en dernière instance cantonale (art. 86 al. 1 let. d et al. 2 et 114 LTF), le présent recours a par ailleurs été déposé en temps utile (<ref-law>) et dans les formes prescrites (<ref-law>) par la recourante qui a qualité pour recourir (cf. consid. 1.2 ci-dessus).
1.4. L'arrêt attaqué succède à l'arrêt 2D_33/2018 du 13 novembre 2018 par lequel le Tribunal fédéral a admis le recours contre l'arrêt du Tribunal cantonal du canton de Neuchâtel du 13 juin 2018 pour déni de justice et lui a renvoyé la cause pour nouvelle décision dans le sens des considérants sans examiner les autres griefs de la recourante. Cette dernière s'était plainte de la violation du principe de transparence en raison de l'absence de procès-verbaux, de la mise à l'écart arbitraire de sa variante et de la violation des principes d'égalité de traitement et d'impartialité, spécialement s'agissant de la notation des offres concernant le critère d'adjudication 12.
Selon la jurisprudence, les considérants de l'arrêt de renvoi du Tribunal fédéral (art. 107 al. 2 et 117 LTF) lient les parties et le Tribunal fédéral lui-même (<ref-ruling> consid. 2a p. 423; arrêts 2C_217/2015 du 29 décembre 2015 consid. 2.1; 2C_519/2013 du 3 septembre 2013 consid. 2.1; 2C_1156/2012 du 19 juillet 2013 consid. 3). Il s'ensuit que ce dernier ne peut pas se fonder sur des motifs qu'il avait écartés ou dont il avait fait abstraction dans sa précédente décision. Quant aux parties, elles ne peuvent plus faire valoir, dans un nouveau recours contre la seconde décision, des moyens que le Tribunal fédéral avait rejetés dans son arrêt de renvoi (<ref-ruling> consid. 4.2 p. 208) ou qu'il n'avait pas eu à examiner, faute pour les parties de les avoir invoqués dans la première procédure de recours, alors qu'elles pouvaient - et devaient - le faire (<ref-ruling> consid. 2 p. 335; <ref-ruling> consid. 2 p. 95). L'autorité précédente est tenue pour sa part de fonder sa nouvelle décision sur les considérants de droit de l'arrêt de renvoi; elle est liée par ce qui a déjà été tranché par le Tribunal fédéral, ainsi que par les constatations de fait qui n'ont pas été critiquées devant lui; des faits nouveaux ne peuvent être pris en considération que sur les points ayant fait l'objet du renvoi, lesquels ne peuvent être ni étendus, ni fondés sur une base juridique nouvelle (<ref-ruling> consid. 2 p. 335; arrêts 2C_519/2013 du 3 septembre 2013 consid. 2.1; 2C_1156/2012 du 19 juillet 2013 consid. 3).
En l'espèce, comme le Tribunal fédéral ne s'est saisi que du grief de déni de justice dans l'arrêt 2D_33/2018 du 13 novembre 2018, à l'exclusion des autres griefs de fonds, et que l'arrêt attaqué reproduit l'intégralité de l'arrêt cantonal du 13 juin 2018, la recourante peut formuler une nouvelle fois les moyens qu'elle avait déjà exposés dans la procédure précédente et ajouter ceux qu'elle entend formuler à l'encontre de la négation par l'instance précédente d'une modification de l'offre de l'adjudicataire.
2.
Le recours constitutionnel peut être formé pour violation des droits constitutionnels (<ref-law>). D'après l'<ref-law> (<ref-law>), le Tribunal fédéral ne connaît de la violation des droits fondamentaux ainsi que celle des dispositions de droit cantonal et intercantonal que si un tel moyen a été invoqué et motivé par le recourant, en d'autres termes, exposé de manière claire et détaillée (<ref-ruling> consid. 3 p. 237).
Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il peut rectifier ou compléter les constatations de l'autorité précédente si les faits ont été établis en violation du droit au sens de l'art. 116 (<ref-law>), ce que la partie recourante doit également démontrer d'une manière circonstanciée et précise, conformément aux exigences de motivation posées à l'<ref-law> (par renvoi de l'<ref-law>; cf. <ref-ruling> consid. 3.2 p. 444 s.).
3.
Invoquant l'interdiction de l'arbitraire, la recourante se plaint de l'application insoutenable du principe de l'intangibilité des offres par l'instance précédente.
3.1. Découlant notamment de l'interdiction des négociations prévue par l'art. 11 let. c de l'Accord intercantonal en matière de marchés publics des 25 novembre 1994 et 15 mars 2001 (AIMP), le principe de l'intangibilité de l'offre à l'échéance du délai ("Prinzip der grundsätzlichen Unveränderbarkeit der Angebote") est rappelé en droit neuchâtelois par l'art. 22 al. 4 de la loi neuchâteloise du 23 mars 1999 sur les marchés publics (LCMP; RS/NE 601.72). Ce principe signifie qu'une offre ne peut être modifiée, complétée ou corrigée une fois déposée par le soumissionnaire et ne doit en principe s'apprécier que sur la seule base du dossier remis (<ref-ruling> consid. 8.2.2 p. 374; arrêt 2P.339/2001 du 12 avril 2002 consid. 5b; JEAN-MICHEL BRAHIER, Offre et contrat : vérification, épuration, rectification et négociation, in : Marchés Publics 2018, Jean-Baptiste Zufferey/Martin Beyeler/Stefan Scherler Ed., vol. 36, p. 279). En revanche, les erreurs évidentes de calcul et d'écritures sont corrigées avant que ne soit dressé un premier tableau comparatif (art. 29 al. 1 LCMP/NE). En outre, toujours selon la législation cantonale, le pouvoir adjudicateur peut inviter le soumissionnaire à fournir par écrit des explications complémentaires et organise au besoin des séances de clarification à cet effet (art. 29 al. 2 LCMP/NE). La distinction entre ce qui relève de la correction des erreurs et de la clarification des offres (admissible) et ce qui ressortit à la modification des offres contraire au principe de l'intangibilité peut se révéler délicate (cf. <ref-ruling> consid. 8.2.2 p. 374 et les références citées). C'est la raison pour laquelle les discussions doivent faire l'objet d'un procès-verbal précis (GALLI/ MOSER/LANG/STEINER, Praxis des öffentlichen Beschaffungsrechts, 2013, p. 314). A tout le moins, l'opération de clarification ne doit pas entraîner de modifications matérielles des offres à l'instar d'une modification des prix, de l'octroi de remises ou rabais nouveaux, ou de modifications du contenu de la prestation offerte ou des modalités de son exécution. En particulier, le pouvoir adjudicateur ne peut pas demander au soumissionnaire de modifier son offre si celle-ci ne respecte pas une exigence du cahier des charges (JEAN-MICHEL BRAHIER, op. cit., p. 292). Il s'agit en dernier ressort d'empêcher des comportements interdits, qui, pour le moins, éveillent le soupçon que certains soumissionnaires bénéficient d'avantages indus (MARTIN BEYELER, Öffentliche Beschaffung, Vergaberecht und Schadenersatz, Schulthess 2004, p. 224).
3.2. En l'espèce, l'instance précédente a constaté que l'offre de la recourante et celle de l'adjudicataire avaient fait l'objet de séances de clarification. La séance tenue avec la recourante avait fait l'objet d'un procès-verbal tandis que celle menée avec l'adjudicataire n'avait pas donné lieu à l'établissement d'un tel procès-verbal, ce que l'instance précédente a jugé à juste titre comme une violation du principe de transparence (cf. arrêt du 13 juin 2018 consid. 4c retranscrit dans l'arrêt attaqué).
3.3. Elle a également retenu que l'adjudicataire avait adressé, le 28 mars 2018, un courrier au pouvoir adjudicateur qui faisait suite à la séance de clarification du 26 mars 2018 dont la teneur était la suivante : " [...] Nous vous confirmons aussi que nous réaliserons les travaux mis en soumission selon le mode opératoire choisi par vos soins, au prix offert selon le libellé original, votre cahier de soumission faisant foi. [...] Par ailleurs les passages de notre rapport technique traitant du dégrappage du revêtement actuel et de la fourniture de grave sont aussi à considérer comme nuls. [...]." Elle a précisé aussi que le chiffre 4.2 du rapport technique déposé par l'adjudicataire expliquait qu' " après la mise en place de la signalisation de chantier nécessaire et déviation du trafic, les travaux débutent par le dégrappage des revêtements puis une reconnaissance du sous-sol existant par sondage si nécessaire ".
Puis, répondant au grief de la recourante qui reprochait au pouvoir adjudicateur d'avoir admis de la part de l'adjudicataire une modification inadmissible de son offre, l'instance précédente a jugé que l'adjudicataire avait, par son courrier, confirmé qu'il exécuterait son offre en conformité du cahier des charges selon le mode opératoire choisi par le pouvoir adjudicateur au prix offert pour chaque position selon le libellé original du cahier de soumission et qu'il avait, de la même manière, indiqué que les passages de son rapport technique traitant du dégrappage du revêtement actuel et de la fourniture de grave étaient à considérer comme nuls. L'instance précédente en a conclu que, contrairement à ce qu'alléguait la recourante, les indications contenues dans le courrier en question ne modifiaient pas l'offre mais confirmaient bien plutôt qu'elle serait réalisée selon le cahier des charges. Elle a encore ajouté qu'en tout état de cause, la recourante n'expliquait pas en quoi le contenu du courrier modifierait l'offre de l'adjudicataire; elle ne voyait dans le contenu du courrier subséquent à l'offre aucune atteinte au principe de l'intangibilité des offres.
3.4. La recourante se plaint avec raison de violation de l'interdiction de l'arbitraire prohibée par l'art. 9 Cst., l'instance précédente ayant adopté une attitude insoutenable en ne décelant pas les contradictions patentes ressortant des faits qu'elle a elle-même retenus.
L'offre de l'adjudicataire contenait un rapport technique dont le ch. 4.2 promettait qu' " après la mise en place de la signalisation de chantier nécessaire et déviation du trafic, les travaux débutent par le dégrappage des revêtements puis une reconnaissance du sous-sol existant par sondage si nécessaire ". Il s'ensuit que l'offre de l'adjudicataire prévoyait expressément de dégrapper les revêtements existants, ce qui, du reste, s'écartait effectivement du cahier des charges, qui exigeait expressément un fraisage (<ref-law>; cf. notamment : contrat 1 CAN Construction : 223 Chaussée et revêtement F/10 (V'17), ch. 121.100 à 121.103 ainsi que 213 et 213.100 à 213.601). En écrivant le 28 mars 2018 au pouvoir adjudicateur à l'issue de la séance du 26 mars 2018 que " les passages de son rapport technique traitant du dégrappage du revêtement actuel et de la fourniture de grave étaient à considérer comme nuls ", l'adjudicataire a manifestement changé le procédé qu'il avait indiqué dans son offre initiale sans changer de prix pour, écrit-il dans ce même courrier, se conformer au " mode opératoire choisi par vos soins, au prix offert selon le libellé original".
Il est vrai que l'ampleur de la modification de l'offre n'est pas connue et qu'en ce sens, elle aurait même pu, comme l'a jugé l'instance précédente dans l'arrêt attaqué, être considérée comme inexistante, si cette même dernière instance n'avait pas préalablement jugé, d'ailleurs à juste titre, que l'absence de procès-verbal de la séance du 26 mars 2018 était contraire au principe de la transparence. C'est précisément en raison de cette circonstance particulière, spécifique à la présente cause, que l'instance précédente est tombée dans l'arbitraire : puisqu'il lui était impossible de connaitre le contenu de la séance du 26 mars 2018 en l'absence de procès-verbal, elle ne pouvait pas sans tomber dans l'arbitraire affirmer que l'offre n'avait pas été modifiée par le courrier du 28 mars 2018, alors même qu'il y était expressément précisé par le consortium intimé que certains passages devaient être considérés comme nuls.
3.5. En confirmant la décision d'adjuger le marché au consortium intimé dans ces circonstances particulières, l'instance précédente est tombée dans l'arbitraire. Au vu des faits exposés ci-dessus, elle aurait dû sanctionner la violation des principes de transparence et d'intangibilité des offres. Il résulte de ce qui précède que la décision d'adjudication du 12 avril 2018 est illicite. Il n'est pas nécessaire d'examiner le bien-fondé des autres griefs de la recourante.
4.
Les considérants qui précèdent conduisent à l'admission du recours. L'arrêt rendu le 18 juillet 2019 par le Tribunal cantonal du canton de Neuchâtel est annulé. Il est constaté que la décision d'adjudication du 12 avril 2018 est illicite. Succombant, le Département du développement territorial et de l'environnement du canton de Neuchâtel, qui s'adresse au Tribunal fédéral dans l'exercice de ses fonctions officielles et dont l'intérêt patrimonial est en cause, doit supporter les frais judiciaires (art. 66 al. 1 et 4 LTF). Ayant obtenu gain de cause avec l'aide d'un mandataire professionnel, la recourante a droit à des dépens à charge du canton de Neuchâtel (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est admis.
2.
L'arrêt rendu le 18 juillet 2019 par le Tribunal cantonal du canton de Neuchâtel est annulé. Il est constaté que la décision d'adjudication du 12 avril 2018 est illicite.
3.
Les frais judiciaires, arrêtés à 9'000 fr., sont mis à la charge du canton de Neuchâtel.
4.
Une indemnité de dépens, arrêtée à 4'000 fr., est allouée à la recourante à charge du canton de Neuchâtel.
5.
La cause est renvoyée au Tribunal cantonal pour nouvelle décision sur les frais et dépens des procédures de recours devant lui.
6.
Le présent arrêt est communiqué au mandataire de la recourante, au Département du développement territorial et de l'environnement de la République et canton de Neuchâtel, à l'Association des entreprises B._ SA et au Tribunal cantonal de la République et canton de Neuchâtel, Cour de droit public.
Lausanne, le 25 mars 2020
Au nom de la IIe Cour de droit public
du Tribunal fédéral suisse
Le Président : Seiler
Le Greffier : Dubey